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

php中数组的交集,并集,以及去除数组的重复项

发布:smiling 来源: PHP粉丝网  添加日期:2014-07-29 16:01:04 浏览: 评论:0 

本文章总结了php中数组的交集,并集,以及去除数组的重复项,以及从小到大排序函数,几乎都是对数组的操作有需要的朋友可参考参考.

PHP实例代码如下:

  1. <?php 
  2. //两个数组的并集 
  3. $arr1 = array('a','b','c','d','e','f'); 
  4. //$arr2 = array('a','a','e','a','p','a','a','e'); 
  5. $arr2 = array('a','a','a','a'); 
  6. $ilength = count($arr1); 
  7. $jlength = count($arr2); 
  8.  
  9. /** 
  10.  * 两个数组的交集 
  11.  * @param array $arr1 
  12.  * @param array $arr2 
  13.  * @autho zhaoya 
  14.  * @return array $arr 
  15.  */ 
  16. function jiaoji($arr1,$arr2
  17.  $ilength = count($arr1); 
  18.  $jlength = count($arr2); 
  19.  for($i=0;$i<$jlength;$i++) 
  20.  { 
  21.      for($j=0;$j<$ilength;$j++) 
  22.      { 
  23.          if($arr2[$i] == $arr1[$j]) 
  24.          { 
  25.              $arr[] = $arr2[$i]; 
  26.              break
  27.          } 
  28.      } 
  29.  } 
  30.  return $arr
  31. $arr3 = array(1,10,10,5,90,50,90); 
  32. $arr4 = array(10,23,50,100,110,80); 
  33. echo '<pre>'
  34. $time1 = microtime(); 
  35.  
  36. /*$arr3 = __deleterepeat($arr3); 
  37. $arr4 = __deleterepeat($arr4); 
  38. $arr5 = bingji($arr3,$arr4); 
  39. $arrsort = sort_array($arr5);*/ 
  40.  
  41. ///经过实验证明  先并集,然后在去除重复值 ,再排序,这样的速度会快一些   
  42. ///而先删除 两个数组的重复值,在并集,在排序的话,这样的速度慢点 
  43. $arr5 = bingji($arr3,$arr4); 
  44. $arr5 = __deleterepeat($arr5); 
  45. $arrsort = sort_array($arr5); 
  46.  
  47. $time2 = microtime(); 
  48. echo $time1,'<hr>'
  49. echo $time2,'<hr>'
  50. echo $time2-$time1
  51.  
  52. print_r($arrsort); 
  53. //去除重复值(第一种方法) 
  54. //__deleterepeat($arr2); 
  55.  
  56.  
  57. /** 
  58.  * 去除重复值(第一种方法) 
  59.  * @param array $array 
  60.  * @return array $tmparr 
  61.  * @author zhaoya 
  62.  */ 
  63. function __deleterepeat($array
  64.     $count = count($array); 
  65.     for($i = 0;$i<$count;$i++) 
  66.     { 
  67.         $change = false; 
  68.         for($j=$i+1;$j<$count;$j++) 
  69.         { 
  70.             if($array[$i] == $array[$j]) 
  71.             { 
  72.                 $change=true; 
  73.                 break
  74.             } 
  75.         } 
  76.         if($change==false) 
  77.         { 
  78.             $tmparr[] = $array[$i]; 
  79.         } 
  80.     } 
  81.     return $tmparr
  82.  
  83.  
  84.  
  85.  
  86.  
  87. //去除重复的值 第二种方法 
  88.  
  89. $arrayshift = _delrepeat($arr2); 
  90. $tmparray=array(); 
  91. /*** 
  92.  * 去除一维数组重复的值 
  93.  * @param array $arr 
  94.  * @return array $tmparray; 
  95.  * @author zhaoya 
  96.  */ 
  97. function _delrepeat($arr
  98.     for($i=0;$i<count($arr);$i++) 
  99.     { 
  100.         if(inarray($arr[$i],$tmp)) 
  101.         { 
  102.             $tmparray[] = $arr[$i]; 
  103.         } 
  104.     } 
  105.     return $tmparray
  106.  
  107. /** 
  108.  * 查找变量是否在这个数组里面 
  109.  * @param integer $num 
  110.  * @param array $arr 
  111.  * @author zhaoya 
  112.  * @return boolean 
  113.  * 
  114.  */ 
  115. function inarray($num,$arr
  116.     if($arr
  117.     { 
  118.         for($i=0;$i<count($arr);$i++) 
  119.         { 
  120.             if($arr[$i] == $num
  121.             { 
  122.                 return false; 
  123.             } 
  124.             return true; 
  125.         } 
  126.     } 
  127.     return true; 
  128.  
  129.  
  130.  
  131.  
  132.  
  133. /** 
  134.  * 两个数组的并集 
  135.  * @param array $arr1  数组1 
  136.  * @param array $arr2  数组2 
  137.  * @author zhaoya 
  138.  * @return array $arr1 
  139.  */ 
  140. function bingji($arr1,$arr2
  141.  $ilength = count($arr1); 
  142.  $jlength = count($arr2); 
  143.  for($i=0;$i<$jlength;$i++) 
  144.  { 
  145.      $change=false; 
  146.      for($j=0;$j<$ilength;$j++) 
  147.      { 
  148.          if($arr2[$i] == $arr1[$j]) 
  149.          { 
  150.              $change = true; 
  151.              break
  152.          } 
  153.      } 
  154.      if($change == false) 
  155.      { 
  156.          $arr1[] = $arr2[$i]; 
  157.      } 
  158.  } 
  159.  return $arr1
  160.  
  161. /** 
  162.  * 数组排序 从小到大 
  163.  * @param array $arr  数组 
  164.  * @author zhaoya 
  165.  * @return array $arr 
  166.  */ 
  167. function sort_array($arr
  168.  $length = count($arr); 
  169.  
  170.  for($i=0;$i<$length;$i++) 
  171.  { 
  172.   for($j=$i+1;$j<$length;$j++) 
  173.   { 
  174.    if($arr[$i] > $arr[$j]) 
  175.    { 
  176.     $tmp = $arr[$i]; 
  177.     $arr[$i] = $arr[$j]; 
  178.     $arr[$j] = $tmp
  179.    } 
  180.   } 
  181.  } 
  182.  return $arr
  183. ?>  

Tags: php数组交集 php数组并集

分享到: