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数组的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did31281