加入收藏 | 设为首页 | 会员中心 | 我要投稿 黔东南站长网 (https://www.0855zz.com.cn/)- 混合云存储、建站、网络、云计算、应用安全!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-07-24 11:43:56 所属栏目:PHP教程 来源:互联网
导读:本文章总结了php中数组的交集,并集,以及去除数组的重复项,以及从小到大排序函数,几乎都是对数组的操作有需要的朋友可参考参考. PHP实例代码如下: ?php //两个数组的并集 $arr1 = array(a,b,c,d,e,f); //$arr2 = array(a,a,e,a,p,a,a,e); $arr2 = array(a,a,
  本文章总结了php中数组的交集,并集,以及去除数组的重复项,以及从小到大排序函数,几乎都是对数组的操作有需要的朋友可参考参考.
 
  PHP实例代码如下:
 
  <?php
  //两个数组的并集
  $arr1 = array('a','b','c','d','e','f');
  //$arr2 = array('a','a','e','a','p','a','a','e');
  $arr2 = array('a','a','a','a');
  $ilength = count($arr1);
  $jlength = count($arr2);
   
  /**
   * 两个数组的交集
   * @param array $arr1
   * @param array $arr2
   * @autho zhaoya
   * @return array $arr
   */
  function jiaoji($arr1,$arr2)
  {
   $ilength = count($arr1);
   $jlength = count($arr2);
   for($i=0;$i<$jlength;$i++)
   {
       for($j=0;$j<$ilength;$j++)
       {
           if($arr2[$i] == $arr1[$j])
           {
               $arr[] = $arr2[$i];
               break;
           }
       }
   }
   return $arr;
  }
  $arr3 = array(1,10,10,5,90,50,90);
  $arr4 = array(10,23,50,100,110,80);
  echo '<pre>';
  $time1 = microtime();
   
  /*$arr3 = __deleterepeat($arr3);
  $arr4 = __deleterepeat($arr4);
  $arr5 = bingji($arr3,$arr4);
  $arrsort = sort_array($arr5);*/
   
  ///经过实验证明  先并集,然后在去除重复值 ,再排序,这样的速度会快一些   
  ///而先删除 两个数组的重复值,在并集,在排序的话,这样的速度慢点
  $arr5 = bingji($arr3,$arr4);
  $arr5 = __deleterepeat($arr5);
  $arrsort = sort_array($arr5);
   
  $time2 = microtime();
  echo $time1,'<hr>';
  echo $time2,'<hr>';
  echo $time2-$time1;
   
  print_r($arrsort);
  //去除重复值(第一种方法)
  //__deleterepeat($arr2);
   
   
  /**
   * 去除重复值(第一种方法)
   * @param array $array
   * @return array $tmparr
   * @author zhaoya
   */
  function __deleterepeat($array)
  {
      $count = count($array);
      for($i = 0;$i<$count;$i++)
      {
          $change = false;
          for($j=$i+1;$j<$count;$j++)
          {
              if($array[$i] == $array[$j])
              {
                  $change=true;
                  break;
              }
          }
          if($change==false)
          {
              $tmparr[] = $array[$i];
          }
      }
      return $tmparr;
  }
   
   
   
   
   
  //去除重复的值 第二种方法
   
  $arrayshift = _delrepeat($arr2);
  $tmparray=array();
  /***
   * 去除一维数组重复的值
   * @param array $arr
   * @return array $tmparray;
   * @author zhaoya
   */
  function _delrepeat($arr)
  {
      for($i=0;$i<count($arr);$i++)
      {
          if(inarray($arr[$i],$tmp))
          {
              $tmparray[] = $arr[$i];
          }
      }
      return $tmparray;
  }
   
  /**
   * 查找变量是否在这个数组里面
   * @param integer $num
   * @param array $arr
   * @author zhaoya
   * @return boolean
   *
   */
  function inarray($num,$arr)
  {
      if($arr)
      {
          for($i=0;$i<count($arr);$i++)
          {
              if($arr[$i] == $num)
              {
                  return false;
              }
              return true;
          }
      }
      return true;
  }
   
   
   
   
   
  /**
   * 两个数组的并集
   * @param array $arr1  数组1
   * @param array $arr2  数组2
   * @author zhaoya
   * @return array $arr1
   */
  function bingji($arr1,$arr2)
  {
   $ilength = count($arr1);
   $jlength = count($arr2);
   for($i=0;$i<$jlength;$i++)
   {
       $change=false;
       for($j=0;$j<$ilength;$j++)
       {
           if($arr2[$i] == $arr1[$j])
           {
               $change = true;
               break;
           }
       }
       if($change == false)
       {
           $arr1[] = $arr2[$i];
       }
   }
   return $arr1;
  }
   
  /**
   * 数组排序 从小到大
   * @param array $arr  数组
   * @author zhaoya
   * @return array $arr
   */
  function sort_array($arr)
  {
   $length = count($arr);
   
   for($i=0;$i<$length;$i++)
   {
    for($j=$i+1;$j<$length;$j++)
    {
     if($arr[$i] > $arr[$j])
     {
      $tmp = $arr[$i];
      $arr[$i] = $arr[$j];
      $arr[$j] = $tmp;
     }
    }
   }
   return $arr;
  }
  ?>  

(编辑:黔东南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读