zoukankan      html  css  js  c++  java
  • 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];
            }
      }
  • 相关阅读:
    代码重构编译---make
    clickhouse日期函数
    连续登陆天数+最大登陆天数
    clickhouse基本使用
    数组
    CK优化
    Hive查询优化~布隆过滤器使用
    Presto常见问题优化
    Presto原理解析
    几种排序说明
  • 原文地址:https://www.cnblogs.com/bneglect/p/11837293.html
Copyright © 2011-2022 走看看