zoukankan      html  css  js  c++  java
  • php数组去重实例及分析

    php数组去重实例及分析。
     一维数组的重复项:
    使用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 ) 。
    二维数组的重复项:
    对于二维数组咱们分两种情况讨论,一种是因为某一键名的值不能重复,删除重复项;另一种因为内部的一维数组不能完全相同,而删除重复项,下面举例说明:
    ㈠因为某一键名的值不能重复,删除重复项
    <?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; // www.jbxue.com
                    }
                    $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] => 赵六 )) 
  • 相关阅读:
    BZOJ2219数论之神——BSGS+中国剩余定理+原根与指标+欧拉定理+exgcd
    Luogu 3690 Link Cut Tree
    CF1009F Dominant Indices
    CF600E Lomsat gelral
    bzoj 4303 数列
    CF1114F Please, another Queries on Array?
    CF1114B Yet Another Array Partitioning Task
    bzoj 1858 序列操作
    bzoj 4852 炸弹攻击
    bzoj 3564 信号增幅仪
  • 原文地址:https://www.cnblogs.com/linuxnotes/p/3474967.html
Copyright © 2011-2022 走看看