PHP 二维数组去重合并

以为其中一维数组相同字段合并,并且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'

猜你喜欢

转载自blog.csdn.net/weixin_39984546/article/details/81206818