好得很程序员自学网

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

删除数组与二维数组值的php代码 - php数组

删除数组与二维数组值的php代码

方法如下:

$arr  =  array (…………) ; //假设有一万个元素的数组,里面有重复的元素。    $arr  =  array_flip ( array_flip ( $arr ));  //这样便可以删除重复元素。  

究竟是怎么回事呢?来看下array_flip()的作用:array_flip()用于将一个数组的每个元素的键和值交换,如:

$arr1  =  array  (]age] => 30, [name] => [快乐园]);   $arr2  =  array_flip ( $arr1 );  //$arr2 就是 array(30 => [age], [快乐园] => [name]);   

在php的数组中,允许不同的元素可以取同一个值,但不允许同一个键名被不同的元素使用,如:

$arr1  =  array  (]age] => 30, [name] => [快乐园], [age] => 20); [age] => 20将会取代]age] => 30   $arr1  =  array  (]name] => [快乐园], [age] => 45);  

这里 $arr1与$arr2是相等的,于是,我们便可以知道,为什么array_flip(array_flip($arr))可以删除数组中重复的元素了,首先,$arr里的值会变成键名,因为值是有重复的,变成键名之后这些重复的值便成了重复的键名,PHP引擎将重复的键名删除,只保留最后一个。如:

$arr1  =  array  (]age] => 30, [name] => [快乐园], [age] => 20);   $arr1  =  array_flip ( $arr1 );  //$arr1 变成了 array(]快乐园] => [name], 20 => [age]);    //再把 $arr1 的键名与值还复:    $arr1  =  array_flip ( $arr1 ); 

上面的代码写得简洁一些就是:$arr1 = array_flip(array_flip($arr1));

上面写了一篇关于数组去重的文章,但是仅限于一维数组,下面的函数可以用于二维数组:

//二维数组去掉重复值   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    $arr  =  array (   array ( 'id'  => 1, 'name'  =>  'aaa' ),   array ( 'id'  => 2, 'name'  =>  'bbb' ),   array ( 'id'  => 3, 'name'  =>  'ccc' ),   array ( 'id'  => 4, 'name'  =>  'ddd' ),   array ( 'id'  => 5, 'name'  =>  'ccc' ),   array ( 'id'  => 6, 'name'  =>  'aaa' ),   array ( 'id'  => 7, 'name'  =>  'bbb' ),   );   function  assoc_unique(& $arr ,  $key )   {   $rAr = array ();   for ( $i =0; $i < count ( $arr ); $i ++)   {   if (!isset( $rAr [ $arr [ $i ][ $key ]]))   {   $rAr [ $arr [ $i ][ $key ]]= $arr [ $i ];   }   }   $arr = array_values ( $rAr );   }   assoc_unique(& $arr , 'name' );   print_r( $arr );   ?> 

利用php自带函数,说明

array array_unique ( array $array )

array_unique() 接受 array 作为输入并返回没有重复值的新数组。

注意键名保留不变。array_unique() 先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留。

Note: 当且仅当 (string) $elem1 === (string) $elem2 时两个单元被认为相同。就是说,当字符串的表达一样时。第一个单元将被保留。

Example #1 array_unique() 例子

<?php  $input  =  array ( "a"  =>  "green" ,  "red" ,  "b"  =>  "green" ,  "blue" ,  "red" );  $result  =  array_unique ( $input );  print_r( $result );  ?> 

上例将输出:

Array

(

    [a] => green

    [0] => red

    [1] => blue

)

Example #2 array_unique() 和类型

<?php  $input  =  array (4,  "4" ,  "3" , 4, 3,  "3" );  $result  =  array_unique ( $input );  var_dump( $result );  ?> 

上例将输出:

array(2) {

  [0] => int(4)

  [2] => string(1) "3"

}

查看更多关于删除数组与二维数组值的php代码 - php数组的详细内容...

  阅读:38次