PHP在同一级别上组合数组

时间:2016-07-04 07:51:28

标签: php arrays cakephp-3.0

因此,我将数据从View发送到Controller,需要将所有(多个)数据保存在DB中。

在视图中我使用category[]status_number[]name[]来收集数据,然后我得到了这个:

[
    'category' => [
        (int) 0 => 'c',
        (int) 1 => 'c1',
        (int) 2 => 'c2'
    ],
    'status_number' => [
        (int) 0 => 'sn',
        (int) 1 => 'sn1',
        (int) 2 => 'sn2'
    ],
    'name' => [
        (int) 0 => 'n',
        (int) 1 => 'n1',
        (int) 2 => 'n2'
    ]
]

现在我需要转换(组合)这个数组,以便我可以将它存储到此结构中的DB

[
    '(int) 0' => [
        category => 'c',
        status_number => 'sn',
        name => 'n'
    ],
   '(int) 1' => [
        category => 'c1',
        status_number => 'sn1',
        name => 'n1'
    ],
   '(int) 2' => [
        category => 'c2',
        status_number => 'sn2',
        name => 'n2'
    ]
]

1 个答案:

答案 0 :(得分:0)

你可以尝试这样的事情:

<?php

$array = [
    'category' => [
        'c',
        'c1',
        'c2'
    ],
    'status_number' => [
        'sn',
        'sn1',
        'sn2'
    ],
    'name' => [
        'n',
        'n1',
        'n2'
    ]
];

$result = [];

array_walk($array, function($data, $key) use (&$result){

    foreach($data as $numericKey => $value) {
        $result[$numericKey][$key] = $value;
    }

});

print_r($result);

结果它给出了:

Array
(
    [0] => Array
        (
            [category] => c
            [status_number] => sn
            [name] => n
        )

    [1] => Array
        (
            [category] => c1
            [status_number] => sn1
            [name] => n1
        )

    [2] => Array
        (
            [category] => c2
            [status_number] => sn2
            [name] => n2
        )

)