将多维PHP数组操作为一个漂亮的多维数组


Manipulate a Multi-Multi-Dimensional PHP Array into a nice Multi-Dimensional Array

我知道这被认为是一个有点基本的PHP数组问题,但我在35个小时内没有睡觉,我真的只需要尽快完成这个问题,这样我就可以睡觉了。。。很抱歉只是诚实!

在PHP中,我有这个变量$design_values

如果我print_r($design_values);这个阵列,它会吐出下面显示的内容。它是"设计"数据库记录。

在这种情况下,有两个设计记录组成了01 的前两个阵列密钥

在应用程序中,可以有从0到任意数量的任意数量的设计。

现在,在2个设计记录下面是2个设计阵列中的每一个的24更多的阵列键。

这些24阵列密钥被编号为023

现在,在24个"阵列"关键帧中的每个关键帧下都有2个关键帧。一个命名为CCD_ 9,另一个命名CCD_。

我需要获取数组$design_values并创建该数组的新数组。新的数组应该格式化得更好,而且易于使用。

因此namevalue密钥应该组成一个key=>value。New数组应该更像这样。。。。

当前的Array之所以是一场噩梦,是因为这是我从现有库中获取的格式,该库从API调用返回此Data。

如果有人能帮我将此阵法操纵成所需阵法,我将不胜感激!我已经搞了两个小时了,运气不好。

所需的新阵列格式:

Array
(
    [0] => Array
        (
            ['assigned_user_name'] => 'Jason Administrator',
            ['modified_by_name'] => 'Jason Administrator',
            ['created_by_name'] => 'Jason Administrator',
            ['id'] => '4c5c3c08-2b14-9f9c-6cee-542c56cac7b1',
            ['date_entered'] => '2014-10-01 19:29:32',
            ....continued for all 24 record items
        ),
    [1] => Array
        (
            ['assigned_user_name'] => 'Jason Administrator',
            ['modified_by_name'] => 'Jason Administrator',
            ['created_by_name'] => 'Jason Administrator',
            ['id'] => '4c5c3c08-2b14-9f9c-6cee-542c56cac7b1',
            ['date_entered'] => '2014-10-01 19:29:32',
            ....continued for all 24 record items
        )
)

当前阵列格式:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [name] => assigned_user_name
                    [value] => Jason Administrator
                )
            [1] => Array
                (
                    [name] => modified_by_name
                    [value] => Jason Administrator
                )
            [2] => Array
                (
                    [name] => created_by_name
                    [value] => Jason Administrator
                )
            [3] => Array
                (
                    [name] => id
                    [value] => 4c5c3c08-2b14-9f9c-6cee-542c56cac7b1
                )
            [4] => Array
                (
                    [name] => name
                    [value] => test
                )
            [5] => Array
                (
                    [name] => date_entered
                    [value] => 2014-10-01 19:29:32
                )
            [6] => Array
                (
                    [name] => date_modified
                    [value] => 2014-10-01 19:29:32
                )
            [7] => Array
                (
                    [name] => modified_user_id
                    [value] => 1
                )
            [8] => Array
                (
                    [name] => created_by
                    [value] => 1
                )
            [9] => Array
                (
                    [name] => description
                    [value] => 
                )
            [10] => Array
                (
                    [name] => deleted
                    [value] => 0
                )
            [11] => Array
                (
                    [name] => assigned_user_id
                    [value] => 1
                )
            [12] => Array
                (
                    [name] => chann_channelqms_id_c
                    [value] => 
                )
            [13] => Array
                (
                    [name] => channelqms
                    [value] => 
                )
            [14] => Array
                (
                    [name] => design_name
                    [value] => 
                )
            [15] => Array
                (
                    [name] => design_number
                    [value] => 
                )
            [16] => Array
                (
                    [name] => overall_height
                    [value] => 
                )
            [17] => Array
                (
                    [name] => overall_width
                    [value] => 
                )
            [18] => Array
                (
                    [name] => show_to_customer
                    [value] => 1
                )
            [19] => Array
                (
                    [name] => uploadfile
                    [value] => 2014-09-29_21-57-50.png
                )
            [20] => Array
                (
                    [name] => nam_channelletterqms_nam_channelletterqms_designs_name
                    [value] => Test
                )
            [21] => Array
                (
                    [name] => price_c
                    [value] => 
                )
            [22] => Array
                (
                    [name] => shipping_c
                    [value] => 
                )
            [23] => Array
                (
                    [name] => totalprice_c
                    [value] => 
                )
        )
    [1] => Array
        (
            [0] => Array
                (
                    [name] => assigned_user_name
                    [value] => Jason Administrator
                )
            [1] => Array
                (
                    [name] => modified_by_name
                    [value] => Jason Administrator
                )
            [2] => Array
                (
                    [name] => created_by_name
                    [value] => Jason Administrator
                )
            [3] => Array
                (
                    [name] => id
                    [value] => 86f21f44-4b21-1826-3592-542c59e4be66
                )
            [4] => Array
                (
                    [name] => name
                    [value] => fdtgrfdhg
                )
            [5] => Array
                (
                    [name] => date_entered
                    [value] => 2014-10-01 19:41:54
                )
            [6] => Array
                (
                    [name] => date_modified
                    [value] => 2014-10-19 19:30:45
                )
            [7] => Array
                (
                    [name] => modified_user_id
                    [value] => 1
                )
            [8] => Array
                (
                    [name] => created_by
                    [value] => 1
                )
            [9] => Array
                (
                    [name] => description
                    [value] => 
                )
            [10] => Array
                (
                    [name] => deleted
                    [value] => 0
                )
            [11] => Array
                (
                    [name] => assigned_user_id
                    [value] => 1
                )
            [12] => Array
                (
                    [name] => chann_channelqms_id_c
                    [value] => 
                )
            [13] => Array
                (
                    [name] => channelqms
                    [value] => 
                )
            [14] => Array
                (
                    [name] => design_name
                    [value] => design name
                )
            [15] => Array
                (
                    [name] => design_number
                    [value] => 313
                )
            [16] => Array
                (
                    [name] => overall_height
                    [value] => 22
                )
            [17] => Array
                (
                    [name] => overall_width
                    [value] => 22
                )
            [18] => Array
                (
                    [name] => show_to_customer
                    [value] => 1
                )
            [19] => Array
                (
                    [name] => uploadfile
                    [value] => 2014-09-29_21-57-50.png
                )
            [20] => Array
                (
                    [name] => nam_channelletterqms_nam_channelletterqms_designs_name
                    [value] => Test
                )
            [21] => Array
                (
                    [name] => price_c
                    [value] => 
                )
            [22] => Array
                (
                    [name] => shipping_c
                    [value] => 
                )
            [23] => Array
                (
                    [name] => totalprice_c
                    [value] => 
                )
        )
)

如果您不能在源代码处更改它,那么有一种方法(array_column需要PHP>=5.5.0):

foreach($design_values as $key => $values) {
    $result[$key] = array_combine(
                                  array_column($values, 'name'),
                                  array_column($values, 'value'));
}

或者可能更简单:

foreach($design_values as $key => $values) {
    $result[$key] = array_column($values, 'value', 'name');
}

我们使用array_column

的PHP实现

在制作第一个数组时,您可能应该创建所需的数组,但如果您无法控制它,只想转换,那么类似这样的操作应该有效:

$newArray = array();
foreach($oldArray as $row){
    $tmp = array();
    foreach($row as $values){
        $tmp[$values['name']] = $values['value'];
    }
    $newArray[] = $tmp;
}
print_r($newArray);