zoukankan      html  css  js  c++  java
  • PHP去除重复的数组数据

    <?php
    $input = array("a" => "green","", "red","b" => "green", "","blue", "red","c" => "witer","hello","witer");
    //$result = array_unique($input); //去除重复元素
    $result = a_array_unique($input);   //只留下单一元素
    foreach($result as $aa)
    {
    echo $aa."<br />";
    }
    function multi_unique($array) {
       foreach ($array as $k=>$na)
           $new[$k] = serialize($na);
       $uniq = array_unique($new);
       foreach($uniq as $k=>$ser)
           $new1[$k] = unserialize($ser);
       return ($new1);
    }
    
    function a_array_unique($array)//写的比较好
    {
       $out = array();
       foreach ($array as $key=>$value) {
           if (!in_array($value, $out))
    {
               $out[$key] = $value;
           }
       }
       return $out;
    }
    ?>
    
     
    
     
    PHP数组去除重复项 有个内置函数array_unique (),但是php的 array_unique函数只适用于一维数组,对多维数组并不适用,以下提供一个二维数组 的 array_unique函数
    
     
    function unique_arr($array2D,$stkeep=false,$ndformat=true)
    {
        // 判断是否保留一级数组键 (一级数组键可以为非数字)
        if($stkeep) $stArr = array_keys($array2D);
        // 判断是否保留二级数组键 (所有二级数组键必须相同)
        if($ndformat) $ndArr = array_keys(end($array2D));
        //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
        foreach ($array2D as $v){
            $v = join(",",$v);
            $temp[] = $v;
        }
        //去掉重复的字符串,也就是重复的一维数组
        $temp = array_unique($temp);
        //再将拆开的数组重新组装
        foreach ($temp as $k => $v)
        {
            if($stkeep) $k = $stArr[$k];
            if($ndformat)
            {
                $tempArr = explode(",",$v);
                foreach($tempArr as $ndkey => $ndval) $output[$k][$ndArr[$ndkey]] = $ndval;
            }
            else $output[$k] = explode(",",$v);
        }
        return $output;
    }
    
     
    
     
    
     
    演示:
    
     
    $array2D = array('first'=>array('title'=>'1111','date'=>'2222'),'second'=>array('title'=>'1111','date'=>'2222'),'third'=>array('title'=>'2222','date'=>'3333'));  
    print_r($array2D);  
    print_r(unique_arr($array2D,true)); 

     方法2:

    例1

    一,PHP一维数组去除重复项(使用array_unique函数)。
    例1,代码:

    <?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二维数组的重复项:
    对于二维数组咱们分两种情况讨论,一种是因为某一键名的值不能重复,删除重复项;
    另一种因为内部的一维数组不能完全相同,而删除重复项。

    例1,因为某一键名的值不能重复,删除重复项。
    代码:

    <?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
          { // www.jbxue.com
             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] => 赵六 ) )

    例2,因内部的一维数组不能完全相同,而删除重复项。
    代码:

    <?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] => 赵六 ) ) 
  • 相关阅读:
    UBI系统原理分析【转】
    udhcpc命令【转】
    Device Tree(三):代码分析【转】
    Linux 中断详解 【转】
    ROS探索总结(三)——ROS新手教程【转】
    机器人操作系统(ROS)教程4:ROS的框架【转】
    你知道市面上机器人都用哪些操作系统吗【转】
    dump_stack调用过程【原创】
    #if、#ifdef、#if defined之间的区别【转】
    浅析firmware完整生存和使用流程 【转】
  • 原文地址:https://www.cnblogs.com/fyy-888/p/5417167.html
Copyright © 2011-2022 走看看