扫码关注官方订阅号
根据多个key判断数组是否相同
相同的行,各个值进行相加
这是我的想法, 把key拼接起来当做一个key,然后就可以想只根据一个key这样去判断?大家还有没有其他的方法?
例如这样的数组, 根据 name number age 确认是否重复,如果重复则把score相加.
谢邀!
<?php $test = [ [ 'name' => 'a', 'age' => 12, 'number' => 11, 'score' => 50, ], [ 'name' => 'a', 'age' => 12, 'number' => 11, 'score' => 30, ], [ 'name' => 'b', 'age' => 12, 'number' => 12, 'score' => 50, ] ]; $arr = array(); foreach($test as $val) { $key = $val['name'] . '-' . $val['age'] . '-' . $val['number']; $arr[$key]['name'] = $val['name']; $arr[$key]['age'] = $val['age']; $arr[$key]['number'] = $val['number']; $arr[$key]['score'] += $val['score']; } var_dump("<pre>", array_values($arr));die;
兄弟,给你写了个最简单的去重的方法,拿去用吧。
function uniqueArr($arr){ $returnArr=[]; //分隔符 $separator="~!#!!#~#!!"; //排序 sort($arr); //去重 foreach($arr as $value){ $k=$value['name'].$separator.$value['number'].$separator.$value['age']; $returnArr[$k]=[ 'name'=>$value['name'], 'number'=>$value['number'], 'age'=>$value['age'] ];//这里是去重 $returnArr[$k]['score']+=$value['score'];//这里是累加 } return $returnArr; }
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
谢邀!
兄弟,给你写了个最简单的去重的方法,拿去用吧。