$result = [];
foreach ($array as $row) {
$result[$row['group']] ??= $row + ['count' => 0]; // only save 1st of group with 0 count
++$result[$row['group']]['count']; // increment the count
}
var_export(array_values($result));
"$Switches" Array with [3] elements
0
SwitchID 1
name k�
type output
displayAs button
value on
groupname group1
1 Array [6]
2 Array [6]
// this will sort after groupname
$result = array();
$target = count($Switches);
for($i=0;$i<$target;$i++)
{
$groupname = $Switches[$i]["groupname"];
$result[$groupname][] = $Switches[$i];
}
// count amount of groups
$groupCount = count($result);
5条答案
按热度按时间dldeef671#
只需遍历数组并为组使用另一个数组。它应该足够快,并且可能比使用sqlite或类似方法时所涉及的开销更快。
fivyi3re2#
kxkpmulp3#
结果:
qojgxg4l4#
无样本数据(最小的,在这个问题中,很难自信地给予关于最佳方法的精确建议一种方法是在结果数组中使用临时分组键。如果以前没有遇到过标识键,则将遇到的整行和附加的
count
元素存储在结果数组中。追加的元素应该有一个0
的值。然后无条件地递增count
的值。当循环结束时,如果你不想要分组键,你可以调用array_values()
。代码:(Demo)
w6mmgewl5#
……还是我错过了什么?