好得很程序员自学网

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

PHP二维数组去重复项自定义函数 - php数组

PHP二维数组去重复项自定义函数

如果我们是一维数据去重复项就不要说了有直接的函数了,但二维数据php未提供函数了,下面小编来给大家推荐两个不错的二维数组去重复项自定义函数吧.

例1代码如下:

function  unique_array_2d( $array2D , $stkeep =false, $ndformat =true)  {          // 判断是否保留一级数组键 (一级数组键可以为非数字)           if ( $stkeep )  $stArr  =  array_keys ( $array2D );            // 判断是否保留二级数组键 (所有二级数组键必须相同)           if ( $ndformat )  $ndArr  =  array_keys ( end ( $array2D ));            //降维,也可以用implode,将一维数组转换为用逗号连接的字符串           foreach  ( $array2D   as   $v ){                  $v  = join( "," , $v );                   $temp [] =  $v ;         }            //去掉重复的字符串,也就是重复的一维数组           $temp  =  array_unique ( $temp );            //再将拆开的数组重新组装           foreach  ( $temp   as   $k  =>  $v )         {                  if ( $stkeep )  $k  =  $stArr [ $k ];                  if ( $ndformat )                 {                          $tempArr  =  explode ( "," , $v );                           foreach ( $tempArr   as   $ndkey  =>  $ndval )  $output [ $k ][ $ndArr [ $ndkey ]] =  $ndval ;                 }                  else   $output [ $k ] =  explode ( "," , $v );          }            return   $output ;  }    $array2D  =  array (          'first' => array ( 'title' => '1111' , 'date' => '2222' ),          'second' => array ( 'title' => '1111' , 'date' => '2222' ),          'third' => array ( 'title' => '2222' , 'date' => '3333' )  );    echo   "<pre>" ;  print_r(unique_array_2d( $array2D ,true));    /**   * 将二维数组通过指定的 key 去重   *   * @param array $arr 要去重的数组   * @param array $by  指定key去重,该参数不指定将返回 array()   * @return array   */   function  array_multunique( $arr , $by  =  array ()) {          $temp  =  array ();          foreach ( $arr   as   $key  =>  $val ) {                  foreach ( $by   as   $v ) {                          $temp [ $key ] .= isset( $val [ $v ]) ?  $val [ $v ] :  '' ;                 }         }          return   array_intersect_key ( $arr , array_unique ( $temp ));  }  /*$aa = array (        array ('id' => 123, 'name' => '张三' ),         array ('id' => 123, 'name' => '李四' ),         array ('id' => 124, 'name' => '王五' ),         array ('id' => 125, 'name' => '赵六' ),         array ('id' => 126, 'name' => '赵六' )      );     $key = 'id';     array_multunique ($aa, array('id')); */     function  array_remove_key( $array , $keys ){          if  (! is_array ( $array ) || ! is_array ( $keys )){                  return  false;         }          foreach ( $array   as   $t ){                  foreach ( $keys   as   $k ){                         unset( $t [ $k ]);                 }                  $doc []= $t ;         }          return   $doc ;    }  /*$array = array(          '0' => array('a' => 'aaaaa', 'b' => 'bbbbb', 'c' => array('d' => 'ddddd', 'e' => 'eeeee')),          '1' => array('a' => 'aaaaa', 'b' => 'bbbbb', 'c' => array('d' => 'ddddd', 'e' => 'eeeee'))   );   print_r( array_remove_key($array,array('c')));*/     function  array_remove_key_val(& $a , $b , $c ){          foreach  ( $a   as   $key => $value ){                  if  ( isset( $value [ $b ]) && ( $value [ $b ]== $c ) ){                         unset( $a [ $key ]);                 }         }  }  /*$a=array(          array('id'=>1,'num'=>10,'type'=>'news'),          array('id'=>2,'num'=>100,'type'=>'pic')   );   print_r( array_remove_key_val($a,"id","1") );*/  

例2代码如下:

/二维数组去掉重复值  function  array_unique_fb( $array2D ){        foreach  ( $array2D   as   $v ){            $v  = join( "," , $v );   //降维,也可以用implode,将一维数组转换为用逗号连接的字符串             $temp [] =  $v ;       }        $temp  =  array_unique ( $temp );     //去掉重复的字符串,也就是重复的一维数组        foreach  ( $temp   as   $k  =>  $v ){           $temp [ $k ] =  explode ( "," , $v );    //再将拆开的数组重新组装       }       return   $temp ;  }      //二维数组去掉重复值  并保留键值   function  array_unique_fb( $array2D ){       foreach  ( $array2D   as   $k => $v ){           $v  = join( "," , $v );   //降维,也可以用implode,将一维数组转换为用逗号连接的字符串      $temp [ $k ] =  $v ;      }    $temp  =  array_unique ( $temp );     //去掉重复的字符串,也就是重复的一维数组        foreach  ( $temp   as   $k  =>  $v ){           $array = explode ( "," , $v );   //再将拆开的数组重新组装      $temp2 [ $k ][ "id" ] = $array [0];        $temp2 [ $k ][ "litpic" ] = $array [1];     $temp2 [ $k ][ "title" ] = $array [2];     $temp2 [ $k ][ "address" ] = $array [3];     $temp2 [ $k ][ "starttime" ] = $array [4];     $temp2 [ $k ][ "endtime" ] = $array [5];     $temp2 [ $k ][ "classid" ] = $array [6];     $temp2 [ $k ][ "ename" ] = $array [7];   }       return   $temp2 ;  } 

查看更多关于PHP二维数组去重复项自定义函数 - php数组的详细内容...

  阅读:38次