PHP多维数组去重

  1. 自己写了一个实现多维数组去重的方法, 只是实现了功能, 至于性能没多管~  可以保留key, 这个方法是针对最终的一维数组元素去重, 如果是多维数组的两个子元素是相同的数组, 是不能去重的
protected function arrayUnique($arr)
    {
        $new_arr = [];
        foreach ($arr as $k=>$v){
            if(!is_array($v)){
                //一维数组去重
                if(!in_array($v, $new_arr)){
                    $new_arr[$k] = $v;
                }
            }
            //多维数组的情况
            if(is_array($v)){
                $new_arr[$k] = $this->arrayUnique($v);
            }
        }
        return $new_arr;
    }
  1.  array_unique 对多维数组去重
    $arr[] = ['name', 'age', 'age', 'age', 'name', 'nam'];  //二维数组的第一个和第二个元素完全相同, 第三个元素稍有不同, 使用array_unique去重后, 结果是第一个和第三个元素保留
    $arr[] = ['name', 'age', 'age', 'age', 'name', 'nam'];  //说明array_unique对多维数组去重, 必须是完全相同才会去重, 
    $arr[] = ['name', 'age', 'age', 'age', 'name', 'end'];  //
    $res = array_unique($arr, SORT_REGULAR);
    print_r($res);
  2. 根据数组值作为新数组的下标来判断是否重复, 进而去重
    foreach($result as $k=>$v){
          $key = $v['city'].$v['country'];
          if(!array_key_exists($key, $res)){
                //不存在则添加
                $res[$key] = $k;
          }else{
                //删除result数组中重复的值
               unset($result[$k]);
          }
          foreach($res as $k=>$v){
               $new_arr[] = $result[$v];
          }
    }
原文地址:https://www.cnblogs.com/bneglect/p/11837293.html