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