网站地图    收藏   

主页 > php专栏 > php数组查询 >

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

来源:自学PHP网    时间:2014-11-25 21:17 作者: 阅读:次

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

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

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

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论