更改嵌套数组中的数据

时间:2015-07-03 10:57:51

标签: php wordpress formidable

我的嵌套数据数据来自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 个答案:

答案 0 :(得分:0)

数组中没有方括号,这就是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"
  }
}

数组是一种为键分配值的数据结构;它不是通过显示该结构表示的函数运行它时看到的字符串。