Изменить данные во вложенном массиве

У меня есть вложенный массив данных ниже, который взят из таблицы базы данных записей формы плагина Wordpress Formidable Pro. Я хотел бы переформатировать его, чтобы я мог использовать его в Wordpress WP_list_table, но я не могу понять, как изменить внутренний вложенный массив. Мне нужно, чтобы каждая строка была отформатирована как 'product_id' => '4080',

            Array (
                [30] => Array (
                    [user_id] => 2
                    [product_id] => 4080
                )
                [31] => Array (
                    [user_id] => 5
                    [product_id] => 2942
                )
                [32] => Array (
                    [user_id] => 4
                    [product_id] => 9630
                )
                [33] => Array (
                    [user_id] => 3
                    [product_id] => 2542
                )
                [34] => Array (
                    [user_id] => 7
                    [product_id] => 1234
                )
            )

Код, используемый для создания массива:

            global $wpdb;

            //Retrieve the bids from the database.      
            $form_entries = $wpdb->get_results('SELECT * FROM '. $wpdb->prefix .'frm_item_metas WHERE field_id in (145,147)');

            $data = array();

            foreach ( $form_entries as $meta ) {

                if ( ! isset($data[$meta->item_id])){

                    $data[$meta->item_id] = array();

                }

                $data[$meta->item_id][] = $meta->meta_value;

            }

            //rename the array keys
            foreach( $data as &$new_values ) {
              $new_values['user_id'] = $new_values[0]; unset( $new_values[0] );
              $new_values['product_id'] = $new_values[1]; unset( $new_values[1] );
            }
            unset($new_values);

        }

Я пытался возиться с strReplace и implode(), но я действительно не знаю, что я делаю. Буду благодарен, если кто-нибудь сможет помочь.

Редактировать: Желаемый массив:

            Array (
                [30] => Array (
                    'user_id' => '2',
                    'product_id' => '4080',
                )
                [31] => Array (
                    'user_id' => '5',
                    'product_id' => '2942',
                )...

1 ответ

Решение

В массиве нет квадратных скобок, именно так print_r отмечает ключи в массиве. Насколько я могу судить, массив в нужном вам формате.

Вот для лучшего понимания вопроса... Я создаю массив.

$test = array(
    30 => array( 'user_id' => '2', 'item_id' => '4080' ), 
    31 => array( 'user_id' => '5', 'item_id' => '2942' ), 
);

Это то, что print_r($test) выглядит так:

Array
(
    [30] => Array
        (
            [user_id] => 2
            [item_id] => 4080
        )

    [31] => Array
        (
            [user_id] => 5
            [item_id] => 2942
        )

)

Вот как выглядит var_export($test):

array (
  30 => 
  array (
    'user_id' => '2',
    'item_id' => '4080',
  ),
  31 => 
  array (
    'user_id' => '5',
    'item_id' => '2942',
  ),
)

Вот как выглядит var_dump($test):

array(2) {
  [30]=>
  array(2) {
    ["user_id"]=>
    string(1) "2"
    ["item_id"]=>
    string(4) "4080"
  }
  [31]=>
  array(2) {
    ["user_id"]=>
    string(1) "5"
    ["item_id"]=>
    string(4) "2942"
  }
}

Массив - это структура данных, которая присваивает значения ключам; это не та строка, которую вы видите при запуске через функцию, которая отображает представление этой структуры.

Другие вопросы по тегам