<?php
/**
* 根据子字段分组
* @param $data 原始数据
* @param $keys 需要分组的字段
* @return mixed
*/
public function groupBy($array, $keys)
{
$i = 0;
while ($i < count($array)) {
$x = count($array) - 1;
while ($x > $i) {
//取数组交集并返回交集,保留键名
$temp = array_intersect_assoc($array[$i], $array[$x]);
if (!empty($temp)) {
// 取键名交集,并做比较,如果相交等于分组依据的键名,则说明两个子数组可以合并
if (array_intersect_assoc($keys, array_keys($temp)) == $keys) {
foreach ($array[$i] as $k => $v) {
if (!in_array($k, $keys)) {
$array[$i][$k] += $array[$x][$k];
}
}
//将合并部分移出数组
array_splice($array, $x, 1);
}
}
$x--;
}
$i++;
}
return $array;
}
?>
PHP根据多个键分组|多字段分组
最新推荐文章于 2025-06-27 09:37:56 发布
这是一个PHP函数,用于根据指定的子字段对数组进行分组和合并。它通过遍历数组,找出子数组的交集,并判断是否符合分组条件。如果满足条件,则合并子数组并从原数组中移除合并后的元素。该函数对于处理和聚合数据非常有用。
1729

被折叠的 条评论
为什么被折叠?



