好得很程序员自学网

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

PHP删除数组重复元素函数 - php数组

PHP删除数组重复元素函数

文章列出一三种删除数组中重复元素函数与实例代码,前二种是利用循环来判断删除重复的数组值,最后一种是比经典的,利用了array_flip()的特性,把值变成键名,再返回重复键名就会丢失,实例代码如下:

function  delsame(& $array )   {   $i  = 0;   while (isset( $array [ $i ]))   {   $j  =  $i  + 1;   while (isset( $array [ $j ]))   {   if ( $array [ $i ] ==  $array [ $j ])  //如果发现后面有重复的元素    {   delmember( $array ,  $j );  //把它删除    $j --;  //重新检查补上来的元素是否是重复的    }   $j  ++;   }  //开源代码phpfensi测试数据   $i  ++;   }   } 

删除数组中重复元素的函数,代码如下:

function  delmember(& $array ,  $id )   {   $size  =  count ( $array );   for ( $i  = 0;  $i  < $size  -  $id  - 1;  $i  ++)   {   $array [ $id  +  $i ] =  $array [ $id  +  $i  + 1];   }   unset( $array [ $size  - 1]);   } 

使用例子,代码如下:

$output  =  array (1, 2, 2,  'HdhCmsTestphpfensi测试数据' , 5, 4, 4, 4, 2, 7, 5, 9, 10);   delsame( $output );   while (list( $key ,  $value ) = each( $output ))   {   echo   "$key:$value" . "<br>" ;   }    //方法二,代码如下:   function  uniquearray( $array )    {    // get unique elts as keys in assoc. array     for  ( $i =0, $n = count ( $array , 1); $i < $n ; $i  )    $u_array [ $array [ $i ]] = 1;        // copy keys only into another array     reset( $u_array , 1);    for  ( $i =0, $n = count ( $u_array , 1); $i < $n ; $i  ) {    $unduplicated_array [] = key( $u_array , 1);    next( $u_array , 1);    }    return   $unduplicated_array ;    }    //方法三,代码如下:   $hills = array ( "first" => "data1" , "second" => "HdhCmsTest111cn.net" , "third" => "data1" );  //开源代码phpfensi测试数据     $hills = array_flip ( $hills );  //还原键名    $hills1 = array_flip ( array_flip ( $hills )); //删除重复    print_r(  $hills1   ); 

array array_flip ( array trans ) 

array_flip() 返回一个反转后的 array,例如 trans 中的键名变成了值,而 trans 中的值成了键名.

注意 trans 中的值需要能够作为合法的键名,例如需要是 integer 或者 string,如果值的类型不对将发出一个警告,并且有问题的键/值对将不会反转.

如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了.

array_flip() 如果失败返回 false.

查看更多关于PHP删除数组重复元素函数 - php数组的详细内容...

  阅读:41次