php专区

 首页 > php专区 > PHP基础 > 数组 > php中数组的交集,并集,以及去除数组的重复项 -

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

分享到:
【字体:大 中 小】
导读:
          本文章总结了php中数组的交集,并集,以及去除数组的重复项,以及从小到大排序函数,几乎都是对数组的操作有需要的朋友可参考参考 PHP实例代码如下:?php 两个数组的并集$arr1=array( 39;a...

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

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

PHP实例代码如下:

  1. //两个数组的并集 
  2. $arr1 = array('a','b','c','d','e','f'); 
  3. //$arr2 = array('a','a','e','a','p','a','a','e'); 
  4. $arr2 = array('a','a','a','a'); 
  5. $ilength = count($arr1); 
  6. $jlength = count($arr2); 
  7.  
  8. /** 
  9.  * 两个数组的交集 
  10.  * @param array $arr1 
  11.  * @param array $arr2 
  12.  * @autho zhaoya 
  13.  * @return array $arr 
  14.  */ 
  15. function jiaoji($arr1,$arr2) 
  16. { 
  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. } 
  32. $arr3 = array(1,10,10,5,90,50,90); 
  33. $arr4 = array(10,23,50,100,110,80); 
  34. echo '
    '; 
  35. $time1 = microtime(); 
  36.  
  37. /*$arr3 = __deleterepeat($arr3); 
  38. $arr4 = __deleterepeat($arr4); 
  39. $arr5 = bingji($arr3,$arr4); 
  40. $arrsort = sort_array($arr5);*/ 
  41.  
  42. ///经过实验证明  先并集,然后在去除重复值 ,再排序,这样的速度会快一些   
  43. ///而先删除 两个数组的重复值,在并集,在排序的话,这样的速度慢点 
  44. $arr5 = bingji($arr3,$arr4); 
  45. $arr5 = __deleterepeat($arr5); 
  46. $arrsort = sort_array($arr5); 
  47.  
  48. $time2 = microtime(); 
  49. echo $time1,'
    '
    ; 
  50. echo $time2,'
    '
    ; 
  51. echo $time2-$time1; 
  52.  
  53. print_r($arrsort); 
  54. //去除重复值(第一种方法) 
  55. //__deleterepeat($arr2); 
  56.  
  57.  
  58. /** 
  59.  * 去除重复值(第一种方法) 
  60.  * @param array $array 
  61.  * @return array $tmparr 
  62.  * @author zhaoya 
  63.  */ 
  64. function __deleterepeat($array) 
  65. { 
  66.     $count = count($array); 
  67.     for($i = 0;$i<$count;$i++) 
  68.     { 
  69.         $change = false; 
  70.         for($j=$i+1;$j<$count;$j++) 
  71.         { 
  72.             if($array[$i] == $array[$j]) 
  73.             { 
  74.                 $change=true; 
  75.                 break; 
  76.             } 
  77.         } 
  78.         if($change==false) 
  79.         { 
  80.             $tmparr[] = $array[$i]; 
  81.         } 
  82.     } 
  83.     return $tmparr; 
  84. } 
  85.  
  86.  
  87.  
  88.  
  89.  
  90. //去除重复的值 第二种方法 
  91.  
  92. $arrayshift = _delrepeat($arr2); 
  93. $tmparray=array(); 
  94. /*** 
  95.  * 去除一维数组重复的值 
  96.  * @param array $arr 
  97.  * @return array $tmparray; 
  98.  * @author zhaoya 
  99.  */ 
  100. function _delrepeat($arr) 
  101. { 
  102.     for($i=0;$i<count($arr);$i++) 
  103.     { 
  104.         if(inarray($arr[$i],$tmp)) 
  105.         { 
  106.             $tmparray[] = $arr[$i]; 
  107.         } 
  108.     } 
  109.     return $tmparray; 
  110. } 
  111.  
  112. /** 
  113.  * 查找变量是否在这个数组里面 
  114.  * @param integer $num 
  115.  * @param array $arr 
  116.  * @author zhaoya 
  117.  * @return boolean 
  118.  * 
  119.  */ 
  120. function inarray($num,$arr) 
  121. { 
  122.     if($arr) 
  123.     { 
  124.         for($i=0;$i<count($arr);$i++) 
  125.         { 
  126.             if($arr[$i] == $num) 
  127.             { 
  128.                 return false; 
  129.             } 
  130.             return true; 
  131.         } 
  132.     } 
  133.     return true; 
  134. } 
  135.  
  136.  
  137.  
  138.  
  139.  
  140. /** 
  141.  * 两个数组的并集 
  142.  * @param array $arr1  数组1 
  143.  * @param array $arr2  数组2 
  144.  * @author zhaoya 
  145.  * @return array $arr1 
  146.  */ 
  147. function bingji($arr1,$arr2) 
  148. { 
  149.  $ilength = count($arr1); 
  150.  $jlength = count($arr2); 
  151.  for($i=0;$i<$jlength;$i++) 
  152.  { 
  153.      $change=false; 
  154.      for($j=0;$j<$ilength;$j++) 
  155.      { 
  156.          if($arr2[$i] == $arr1[$j]) 
  157.          { 
  158.              $change = true; 
  159.              break; 
  160.          } 
  161.      } 
  162.      if($change == false) 
  163.      { 
  164.          $arr1[] = $arr2[$i]; 
  165.      } 
  166.  } 
  167.  return $arr1; 
  168. } 
  169.  
  170. /** 
  171.  * 数组排序 从小到大 
  172.  * @param array $arr  数组 
  173.  * @author zhaoya 
  174.  * @return array $arr 
  175.  */ 
  176. function sort_array($arr) 
  177. { 
  178.  $length = count($arr); 
  179.  
  180.  for($i=0;$i<$length;$i++) 
  181.  { 
  182.   for($j=$i+1;$j<$length;$j++) 
  183.   { 
  184.    if($arr[$i] > $arr[$j]) 
  185.    { 
  186.     $tmp = $arr[$i]; 
  187.     $arr[$i] = $arr[$j]; 
  188.     $arr[$j] = $tmp; 
  189.    } 
  190.   } 
  191.  } 
  192.  return $arr; 
  193. } 
  194. ?>  
分享到:
php中数值数组、关联数组、多维数组用法 ...
php中数值数组、关联数组、多维数组用法 在php中用三种数组分别是数值数组,关联数组,多维数组那么它们三种的用法有一点不同,下面我们来看看吧. 数值数组:数值数组存储的每个元素都带有一个数字 ID 键,可以使用不同的方法来创建数值数组. 例子1,在这个例子中,会自动分配 ID 键,代码如下: $...
php中计算二维数组平均值/分组平均值实例...
php中计算二维数组平均值/分组平均值实例 计算数组平均值,二维数组平均值计算,分组计算平均值,代码如下: $array = array(       array(&#039;class&#039; => &#039;a&#039;, &#039;value&#039; => 3),       array(&#039;class&#039; => &#039;a&#039;, &#03...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……