好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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' , '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 ;  }  ?>  

查看更多关于php中数组的交集,并集,以及去除数组的重复项 -的详细内容...

  阅读:45次