PHP删除数组重复元素函数

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

  1. function delsame(&$array)
  2. {
  3. $i = 0;
  4. while(isset($array[$i]))
  5. {
  6. $j = $i + 1;
  7. while(isset($array[$j]))
  8. {
  9. if($array[$i] == $array[$j]) //如果发现后面有重复的元素
  10. {
  11. delmember($array, $j); //把它删除
  12. $j--; //重新检查补上来的元素是否是重复的
  13. }
  14. $j ++;
  15. } //开源代码phpfensi.com
  16. $i ++;
  17. }
  18. }

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

  1. function delmember(&$array, $id)
  2. {
  3. $size = count($array);
  4. for($i = 0; $i <$size - $id - 1; $i ++)
  5. {
  6. $array[$id + $i] = $array[$id + $i + 1];
  7. }
  8. unset($array[$size - 1]);
  9. }

使用例子,代码如下:

  1. $output = array(1, 2, 2, 'www.phpfensi.com', 5, 4, 4, 4, 2, 7, 5, 9, 10);
  2. delsame($output);
  3. while(list($key, $value) = each($output))
  4. {
  5. echo "$key:$value"."<br>";
  6. }
  7. //方法二,代码如下:
  8. function uniquearray($array)
  9. {
  10. // get unique elts as keys in assoc. array
  11. for ($i=0,$n=count($array, 1);$i<$n;$i )
  12. $u_array[$array[$i]] = 1;
  13. // copy keys only into another array
  14. reset($u_array, 1);
  15. for ($i=0,$n=count($u_array, 1);$i<$n;$i ) {
  16. $unduplicated_array[] = key($u_array, 1);
  17. next($u_array, 1);
  18. }
  19. return $unduplicated_array;
  20. }
  21. //方法三,代码如下:
  22. $hills=array("first"=>"data1","second"=>"www.111cn.net","third"=>"data1"); //开源代码phpfensi.com
  23. $hills=array_flip($hills); //还原键名
  24. $hills1=array_flip(array_flip($hills));//删除重复
  25. print_r( $hills1 );

array array_flip ( array trans )

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

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

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

array_flip() 如果失败返回 false.