PHP从数组创建一种新类型的数组

时间:2013-01-25 00:27:48

标签: php arrays multidimensional-array

我有以下数据数组:

$data = array(
 0 => array(
   'firstname' => 'John',
   'lastname' => 'Doe'
 ),
 1 => array(
   'firstname' => 'Foo',
   'lastname' => 'Bar'
 )
)

我喜欢操纵它以最终得到这个数组:

$finalData = array(
 'firstname' => array('John','Foo'),
 'lastname' => array('Doe','Bar')
)

如何使用PHP完成此操作?如果可以在这种情况下使用PHP数组方法,我很乐意了解它。

谢谢!

4 个答案:

答案 0 :(得分:0)

这对于像array_map这样的功能来说太专业了,而不会让自己陷入困境。但您可以使用foreach循环轻松完成此操作:

$finalData = array();
foreach ($data as $person) {
    $finalData['firstname'][] = $person['firstname'];
    $finalData['lastname'][] = $person['lastname'];
}

答案 1 :(得分:0)

您必须循环遍历$ data才能分别收集名字和姓氏。不幸的是,没有标准的PHP函数可以执行“数组采集”。

答案 2 :(得分:0)

嗯,我不认为存在类似的东西,但我认为你应该阅读docs on array functions

如果您没有找到任何内容,请自行创建(可能使用array_map),并回答您自己的问题。

答案 3 :(得分:0)

这给你想要的东西;

$new_data = array();
foreach ($data as $d) {
    $keys = array_keys($d);
    foreach ($keys as $k) {
        $new_data[$k][] = $d[$k];
    }
}
print_r($new_data);

结果;

Array
(
    [firstname] => Array
        (
            [0] => John
            [1] => Foo
        )

    [lastname] => Array
        (
            [0] => Doe
            [1] => Bar
        )

)