【发布时间】:2013-11-10 22:00:57
【问题描述】:
我正在转置一些数据库结果以生成统计信息。
原始数组:
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函数可以达到同样的效果?
这种重构的通用名称是什么?
编辑:
根据下面的 cmets,正确的术语是“转置”
【问题讨论】:
-
这在数学上叫做“转置矩阵”。
-
@sectus 这是一个很好的解决方案,但不适用于此示例,因为它不保留字符串键
-
@Blazemonger 感谢您提供术语指针,作为答案发布?
-
Refactor有不同的含义。 -
现在我明白了,希望发现这个问题的人(比如我自己)使用了那个不正确的术语,他们会从你的回答中得到启发。
标签: php arrays refactoring