首页 > 语言 > PHP > 正文

PHP删除数组重复元素函数

2024-09-04 11:46:21
字体:大 中 小
来源:转载
供稿:网友

文章列出一三种删除数组中重复元素函数与实例代码,前二种是利用循环来判断删除重复的数组值,最后一种是比经典的,利用了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. } //开源代码Vevb.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.Vevb.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. { 
  11.  
  12. // get unique elts as keys in assoc. array 
  13.  
  14. for ($i=0,$n=count($array, 1);$i<$n;$i ) 
  15.  
  16. $u_array[$array[$i]] = 1; 
  17.  
  18.  
  19.  
  20. // copy keys only into another array 
  21.  
  22. reset($u_array, 1); 
  23.  
  24. for ($i=0,$n=count($u_array, 1);$i<$n;$i ) { 
  25.  
  26. $unduplicated_array[] = key($u_array, 1); 
  27.  
  28. next($u_array, 1); 
  29.  
  30. } 
  31.  
  32. return $unduplicated_array; 
  33.  
  34. } 
  35.  
  36. //方法三,代码如下: 
  37. $hills=array("first"=>"data1","second"=>"www.111cn.net","third"=>"data1"); //开源代码Vevb.com 
  38.  
  39. $hills=array_flip($hills); //还原键名  
  40. $hills1=array_flip(array_flip($hills));//删除重复  
  41. print_r( $hills1  ); 

array array_flip ( array trans ) 

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

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

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

array_flip() 如果失败返回 false.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表