复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46<?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数组以某个字段分组求和内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复