我有一个子数组的数组,格式如下:
array
(
a => array ( id = 20, name = chimpanzee )
b => array ( id = 40, name = meeting )
c => array ( id = 20, name = dynasty )
d => array ( id = 50, name = chocolate )
e => array ( id = 10, name = bananas )
f => array ( id = 50, name = fantasy )
g => array ( id = 50, name = football )
)
我想根据每个子数组中的id字段将其分组到一个新数组中。
array
(
10 => array
(
e => array ( id = 10, name = bananas )
)
20 => array
(
a => array ( id = 20, name = chimpanzee )
c => array ( id = 20, name = dynasty )
)
40 => array
(
b => array ( id = 40, name = meeting )
)
50 => array
(
d => array ( id = 50, name = chocolate )
f => array ( id = 50, name = fantasy )
g => array ( id = 50, name = football )
)
)
6条答案
按热度按时间p4rjhz4m1#
ioekq8ef2#
小菜一碟)
uelo1irk3#
下面的代码改编了@Tim库珀的代码,以减少内部数组之一不包含id时的
Undefined index: id
错误:但是,它将删除没有id的内部数组。
例如
将完全删除'h'数组。
bqujaahr4#
您也可以使用ouzo-goodies中的Arrays::groupBy():
结果:
这里是Arrays和Functions的文档。
ej83mcc05#
下面是一个函数,它将一个数组作为第一个参数,将一个条件(字符串或回调函数)作为第二个参数。该函数返回一个新数组,并根据请求对数组进行分组。
下面是给定的数组:
以及将函数与字符串和回调函数一起使用的示例:
两个示例中的结果相同:
在上面的示例中,传递回调函数有些多余,但是当您传入对象数组、多维数组或您想要根据其进行分组的任意对象时,使用回调函数会有用武之地。
nue99wik6#
也许值得一提的是你也可以使用php
array_reduce
函数https://www.php.net/manual/en/function.array-reduce.php