原始阵列:
Array
(
[0] => Array
(
[a] => apple
[b] => beer
[c] => chocolate
)
[1] => Array
(
[a] => aardvark
[b] => bear
[c] => chupacabra
)
)
期望的结果:
Array
(
[a] => Array
(
[0] => apple
[1] => aardvark
)
[b] => Array
(
[0] => beer
[1] => bear
)
[c] => Array
(
[0] => chocolate
[1] => chupacabra
)
)
示例代码:
$stats[] = array(
'a' => 'apple',
'b' => 'beer',
'c' => 'chocolate'
);
$stats[] = array(
'a' => 'aardvark',
'b' => 'bear',
'c' => 'chupacabra'
);
foreach (array_keys($stats[0]) as $key){
$data[$key] = array_column($stats, $key);
}
上面的代码使用array_keys和array_column(php 5.5)正常工作.
>是否有更优雅的方式或PHP功能来实现相同的结果?
>这种重新分解的通用名称是什么?
编辑:
根据下面的评论,正确的术语是“转置”
解决方法:
我以为有一个array_ *函数用于那种事情,但我不记得所以我去了PHP文档结果发现array_merge_recursive正是你想要的.
array_merge_recursive($array1, $array2)
您将数组组合在一个数组中,因此您必须使用数组的内容填充函数的参数.
call_user_func_array("array_merge_recursive", $stats)
那一行应该做你想要的.
标签:php,arrays,refactoring
来源: https://codeday.me/bug/20190629/1324694.html