根据多个key判断数组是否相同
相同的行,各个值进行相加
这是我的想法, 把key拼接起来当做一个key,然后就可以想只根据一个key这样去判断?大家还有没有其他的方法?
<?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,
],
]
例如这样的数组, 根据 name number age 确认是否重复,如果重复则把score相加.
滿天的星座2017-05-27 17:45:19
谢邀!
<?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;
世界只因有你2017-05-27 17:45:19
兄弟,给你写了个最简单的去重的方法,拿去用吧。
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;
}