首页 > 语言 > 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. }  

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

  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]);  

使用例子,代码如下:

  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. // get unique elts as keys in assoc. array 
  12.  
  13. for ($i=0,$n=count($array, 1);$i<$n;$i ) 
  14.  
  15. $u_array[$array[$i]] = 1; 
  16.  
  17.  
  18.  
  19. // copy keys only into another array 
  20.  
  21. reset($u_array, 1); 
  22.  
  23. for ($i=0,$n=count($u_array, 1);$i<$n;$i ) { 
  24.  
  25. $unduplicated_array[] = key($u_array, 1); 
  26.  
  27. next($u_array, 1); 
  28.  
  29.  
  30. return $unduplicated_array
  31.  
  32.  
  33. //方法三,代码如下: 
  34. $hills=array("first"=>"data1","second"=>"www.111cn.net","third"=>"data1"); //开源代码Vevb.com 
  35.  
  36. $hills=array_flip($hills); //还原键名  
  37. $hills1=array_flip(array_flip($hills));//删除重复  
  38. print_r( $hills1  ); 

array array_flip ( array trans ) 

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

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

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

array_flip() 如果失败返回 false.

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