当前位置:首页 > PHP教程 > php数组 > 列表

php去除数组中重复数据

发布:smiling 来源: PHP粉丝网  添加日期:2021-04-27 11:29:35 浏览: 评论:0 

去除数组中的重复数据,又叫排重,本文给出的函数和php原生array_unique的区别在于array_unique要求是字符串,而本函数可以是数组和对象

废话不多说,直接上代码:

  1. /** 
  2.          * 给数组排重 
  3.          * 与array_unique函数的区别:它要求val是字符串,而这个可以是数组/对象 
  4.          * 
  5.          * @param unknown_type $arr 要排重的数组 
  6.          * @param unknown_type $reserveKey 是否保留原来的Key 
  7.          * @return unknown 
  8.          */ 
  9.         static function m_ArrayUnique($arr$reserveKey = false) 
  10.         { 
  11.             if (is_array($arr) && !emptyempty($arr)) 
  12.             { 
  13.                 foreach ($arr as $key => $value
  14.                 { 
  15.                     $tmpArr[$key] = serialize($value) . ''
  16.                 } 
  17.                 $tmpArr = array_unique($tmpArr); 
  18.                 $arr = array(); 
  19.                 foreach ($tmpArr as $key => $value
  20.                 { 
  21.                     if ($reserveKey
  22.                     { 
  23.                         $arr[$key] = unserialize($value); 
  24.                     } 
  25.                     else 
  26.                     { 
  27.                         $arr[] = unserialize($value); 
  28.                     } 
  29.                 } 
  30.             } 
  31.             return $arr
  32.         } 

代码很简单,却非常的实用,有需要的小伙伴可以直接拿去用的。

另附上其他网友的解决办法:

  1. <?php 
  2. $input = array("a" => "green","""red","b" => "green""","blue""red","c" => "witer","hello","witer"); 
  3. //$result = array_unique($input); //去除重复元素 
  4. $result = a_array_unique($input);   //只留下单一元素 
  5. foreach($result as $aa
  6. echo $aa."<br />"
  7. function multi_unique($array) { 
  8.    foreach ($array as $k=>$na
  9.        $new[$k] = serialize($na); 
  10.    $uniq = array_unique($new); 
  11.    foreach($uniq as $k=>$ser
  12.        $new1[$k] = unserialize($ser); 
  13.    return ($new1); 
  14. function a_array_unique($array)//写的比较好 
  15.    $out = array(); 
  16.    foreach ($array as $key=>$value) { 
  17.        if (!in_array($value$out)) 
  18.            $out[$key] = $value
  19.        } 
  20.    } 
  21.    return $out
  22. ?> 

PHP数组去除重复项 有个内置函数array_unique (),但是php的 array_unique函数只适用于一维数组,对多维数组并不适用,以下提供一个二维数组 的 array_unique函数,代码如下:

  1. function unique_arr($array2D,$stkeep=false,$ndformat=true) 
  2.     // 判断是否保留一级数组键 (一级数组键可以为非数字) 
  3.     if($stkeep$stArr = array_keys($array2D); 
  4.     // 判断是否保留二级数组键 (所有二级数组键必须相同) 
  5.     if($ndformat$ndArr = array_keys(end($array2D)); 
  6.     //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 
  7.     foreach ($array2D as $v){ 
  8.         $v = join(",",$v); 
  9.         $temp[] = $v
  10.     } 
  11.     //去掉重复的字符串,也就是重复的一维数组 
  12.     $temp = array_unique($temp); 
  13.     //再将拆开的数组重新组装 
  14.     foreach ($temp as $k => $v
  15.     { 
  16.         if($stkeep$k = $stArr[$k]; 
  17.         if($ndformat
  18.         { 
  19.             $tempArr = explode(",",$v); 
  20.             foreach($tempArr as $ndkey => $ndval$output[$k][$ndArr[$ndkey]] = $ndval
  21.         } 
  22.         else $output[$k] = explode(",",$v); 
  23.     } 
  24.     return $output

演示:

  1. $array2D = array('first'=>array('title'=>'1111','date'=>'2222'),'second'=>array('title'=>'1111','date'=>'2222'),'third'=>array('title'=>'2222','date'=>'3333'));  
  2. print_r($array2D);  
  3. print_r(unique_arr($array2D,true)); 

Tags: php去除数组重复数据

分享到: