zoukankan      html  css  js  c++  java
  • PHP使用array_unique对二维数组去重处理

    array_unique函数就是可以处重的,它具备了这个功能了,下面我们一来看一个关于PHP使用array_unique对二维数组去重处理例子。

    php 5.2.9 版本增加了array_unique对多维数组的支持,在处理多维数组是需要设置sort_flags参数

    一维数组的重复项:

    使用array_unique函数即可,使用实例如下:

    代码如下 复制代码

    <?php
    
    $aa = array("apple", "banana", "pear", "apple", "wail", "watermalon");
    
    $bb = array_unique($aa);
    
    print_r($bb);
    
    ?>
    

      结果如下:

    Array ( [0] => apple [1] => banana [2] => pear [4] => wail [5] => watermalon ) 
    

      

    二维数组去重项

    代码如下 复制代码

    例如:

    $result = array(
    
    0=>array('a'=>1,'b'=>'Hello'),
    
    1=>array('a'=>1,'b'=>'other'),
    
    2=>array('a'=>1,'b'=>'other'),
    
    );
    

      处理成

    $result = array(
    
    0=>array('a'=>1,'b'=>'Hello'),
    
    1=>array('a'=>1,'b'=>'other') 
    
    );
    

      使用方法

    array_unique($result, SORT_REGULAR);
    

      

    二维数组的重复项:

    对于二维数组咱们分两种情况讨论,一种是因为某一键名的值不能重复,删除重复项;另一种因为内部的一维数组不能完全相同,而删除重复项,下面举例说明:

    ㈠因为某一键名的值不能重复,删除重复项

    PHP

    代码如下 复制代码

    <?php
    
    function assoc_unique($arr, $key) {
    
    $tmp_arr = array();
    
    foreach ($arr as $k => $v) {
    
    if (in_array($v[$key], $tmp_arr)) {//搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true
    
    unset($arr[$k]);
    
    } else {
    
    $tmp_arr[] = $v[$key];
    
    }
    
    }
    
    sort($arr); //sort函数对数组进行排序
    
    return $arr;
    
    }
    
    $aa = array(
    
    array('id' => 123, 'name' => '张三'),
    
    array('id' => 123, 'name' => '李四'),
    
    array('id' => 124, 'name' => '王五'),
    
    array('id' => 125, 'name' => '赵六'),
    
    array('id' => 126, 'name' => '赵六')
    
    );
    
    $key = 'id';
    
    assoc_unique(&$aa, $key);
    
    print_r($aa);
    
    ?>
    

      显示结果为:

    Array ( [0] => Array ( [id] => 123 [name] => 张三 ) [1] => Array ( [id] => 124 [name] => 王五 ) [2] => Array ( [id] => 125 [name] => 赵六 ) [3] => Array ( [id] => 126 [name] => 赵六 ) )
    

      

    ㈡因内部的一维数组不能完全相同,而删除重复项

    代码如下 复制代码

    <?php
    
     
    
    function array_unique_fb($array2D) {
    
    foreach ($array2D as $v) {
    
    $v = join(",", $v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
    
    $temp[] = $v;
    
    }
    
    $temp = array_unique($temp);//去掉重复的字符串,也就是重复的一维数组
    
    foreach ($temp as $k => $v) {
    
    $temp[$k] = explode(",", $v);//再将拆开的数组重新组装
    
    }
    
    return $temp;
    
    }
    
     
    
    $aa = array(
    
    array('id' => 123, 'name' => '张三'),
    
    array('id' => 123, 'name' => '李四'),
    
    array('id' => 124, 'name' => '王五'),
    
    array('id' => 123, 'name' => '李四'),
    
    array('id' => 126, 'name' => '赵六')
    
    );
    
    $bb = array_unique_fb($aa);
    
    print_r($bb)
    
    ?>
    

      显示结果:

    Array ( [0] => Array ( [0] => 123 [1] => 张三 ) [1] => Array ( [0] => 123 [1] => 李四 ) [2] => Array ( [0] => 124 [1] => 王五 ) [4] => Array ( [0] => 126 [1] => 赵六 ) )
    

      

     

  • 相关阅读:
    第十四周 Leetcode 315. Count of Smaller Numbers After Self(HARD) 主席树
    POJ1050 To the Max 最大子矩阵
    POJ1259 The Picnic 最大空凸包问题 DP
    POJ 3734 Blocks 矩阵递推
    POJ2686 Traveling by Stagecoach 状态压缩DP
    iOS上架ipa上传问题那些事
    深入浅出iOS事件机制
    iOS如何跳到系统设置里的各种设置界面
    坑爹的私有API
    业务层网络请求封装
  • 原文地址:https://www.cnblogs.com/ymdphp/p/11507517.html
Copyright © 2011-2022 走看看