概述
<?php
$list = array(
0 => array('name' => 'aa', 'score' => 88),
1 => array('name' => 'aa', 'score' => 99),
2 => array('name' => 'bb', 'score' => 33),
3 => array('name' => 'cc', 'score' => 99)
);
foreach ($list as $val) {
$this->add_array($val, $new_arr, 'name');
}
//数组分组相加
public function add_array($arr, &$new_arr, $target_key) {
$num = count($new_arr); //计算新数组的大小,新数组也是二维的,这里计算的是第一维
$cmp_num = 0;
for ($i = 0; $i < $num; $i++) {
if ($arr[$target_key] != $new_arr[$i][$target_key]) {//判断新数组中的分组键名是否跟当前源数组中的分组键名相等
$cmp_num++; //如果不相等,比较次数自增1
} else {//如果相等,说明当前分组键名已经存在
$tar_exist = true; //设置存在标识为true
$tar_key = $i; //返回当前分组键名在新数组中的数字索引
break; //跳出循环
}
}
//如果比较次数跟新数组大小一样,说明当前分组键名不在新数组中,设置存在标识为false
if ($cmp_num == $num)
$tar_exist = false;
if ($tar_exist) {//如果分组键名已经存在,对该分组的数组元素进行相加
foreach ($arr as $key => $value) {
if ($key != $target_key) {//分组键名对应的元素值不相加
$new_arr[$tar_key][$key] += $value; //其余的元素值进行相加
}
}
} else {
$new_arr[$num][$target_key] = $arr[$target_key];
foreach ($arr as $key => $value) {
if ($key != $target_key) {//分组键名对应的元素值不相加
if(isset($new_arr[$num][$key])) {
$new_arr[$num][$key] += $value; //其余的元素值进行相加
}else {
$new_arr[$num][$key] = $value; //其余的元素值进行相加
}
}
}
}
}
?>
最后
以上就是迷人金鱼为你收集整理的PHP数组以某个字段分组求和的全部内容,希望文章能够帮你解决PHP数组以某个字段分组求和所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复