以为其中一维数组相同字段合并,并且total字段相加
$arr=array(5) {
[0]=>
array(3) {
["id"]=>
string(1) "1"
["total"]=>
string(1) "1"
["name"]=>
string(4) "张三"
}
[1]=>
array(3) {
["id"]=>
string(1) "1"
["total"]=>
string(1) "1"
["name"]=>
string(4) "张三"
}
[2]=>
array(3) {
["id"]=>
string(1) "1"
["total"]=>
string(1) "3"
["name"]=>
string(4) "张三"
}
[3]=>
array(3) {
["id"]=>
string(1) "2"
["total"]=>
string(1) "1"
["name"]=>
string(6) "李四"
}
[4]=>
array(3) {
["id"]=>
string(1) "2"
["total"]=>
string(1) "3"
["name"]=>
string(6) "李四"
}
}
期望去重合并后得到新数组
$arr=array(2) {
[0]=>
array(3) {
["id"]=>
string(1) "1"
["total"]=>
string(1) "5"
["name"]=>
string(4) "张三"
}
[1]=>
array(3) {
["id"]=>
string(1) "2"
["total"]=>
string(1) "4"
["name"]=>
string(6) "李四"
}
}
方法如下
$container = array();
$result = array();
foreach ($arr as $item) {
$key = $item['name'] . '_' . $item['id'];
if (empty($container[$key])) {
$container[$key] = $item['total'];
} else {
$container[$key] += $item['total'];
}
}
foreach ($container as $key => $item) {
list($name, $id) = explode('_', $key);
$result[] = array('name' => $name, 'id' => $id, 'total' => $item);
}
//输出后得到期望数组
echo '$result'