我有以下数组:
Array
(
[0] => Array
(
[Name] => first_data
[building] => A
[apt] => 16
)
[1] => Array
(
[Name] => first_data
[building] => B
[apt] => 16
)
[2] => Array
(
[Name] => second_data
[building] => A
[apt] => 17
)
[3] => Array
(
[Name] => second_data
[building] => B
[apt] => 18
)
我需要将其作为:
返回Array
(
[0] => Array
(
[Name] => first_data
[A] => 16
[B] => 16
)
[1] => Array
(
[Name] => second_data
[A] => 17
[B] => 18
)
有什么想法吗?
顺便说一句,第一个阵列有数百个条目(不仅是first_data,还有第二个等等......)加上它有超过A和B.
提前致谢。
答案 0 :(得分:1)
不完全是您想要的,但如果您改为按名称索引新数组,则可以非常轻松地完成此操作。如果索引号是某种ID,您只需为其创建一个字段
foreach ( $oldarray as $index => $piece )
{
$newarray[$piece['Name']] = array($piece['building'] => $piece['apt'])
}
这会给你
Array
(
['first_data'] => Array
(
['A'] => 16,
['B'] => 16
)
['second_data'] => Array
(
['A'] => 17,
['B'] => 18
)
)
由于你有两个具有相同new的条目,当你点击第二个循环时,它只会添加另一个建筑物名称。如果你可以使用这种布局,那么你的解决方案非常简单,它将需要更多的步骤来完成你所展示的。如果您必须按照显示的方式进行操作,则需要额外的代码来遍历新数组,找到建筑物名称,在正确的位置添加密钥,但如果您有大量数据,这将会更慢。
在我看来,我提出它的方式也是一种更容易查看数组的方法。如果你想知道“second_data”中A的apt值,你可以做到
$newarray['second_data']['A']
使用你的数组布局,它需要一个循环来搜索数组中的“second_data”,因为你不知道它在哪里。