php 去掉完全相同的重复数组

PHP 2593 0 2013-06-28

php 去掉完全相同的重复数组

php提供了一个重复数组合并的函数array_unique

$input=array("11"=>"aaaa","22"=>"bbbb","33"=>"cccc","11"=>"aaada");
$result = array_unique ($input);
print_r($result);
结果为:Array ( [11] => aaada [22] => bbbb [33] => cccc )

 

不过该函数有个缺点

如上,数组的第一个和第四个仅仅是键值相同而已,但是被合并了

我现在想当数组中的两个值完全一样的时候才去掉其中一个重复的元素,这个怎么做到?

数据量稍微大点,我不希望提供的方法耗费大量资源

上一篇:php去除重复字符的实现代码

下一篇:php中读取txt文件的问题

讨论数量:2

天涯网魂 3 杠 5 星2013-06-28 23:39:53

你所用的那个array_unique 是可以实现你想要的结果的 

$input=array("11"=>"aaaa","22"=>"bbbb","33"=>"cccc","11"=>"aaada");
这个数组前的键11的值会直接给后的键11的值代替,也就是重新赋值

$input=array("11"=>"aaaa","22"=>"bbbb","33"=>"cccc","55"=>"aaaa");  你把数组定义成这样  就会有你想要的结果

$result = array_unique ($input);
print_r($result);

天涯网魂 3 杠 5 星2013-06-28 23:39:36

一、这个没有被合并,只是取的后面这个键名的值,
二、$input=array("11"=>"aaaa","22"=>"bbbb","33"=>"cccc","11"=>"aaada","44"=>"cccc1","55"=>"cccc");
$result = array_unique ($input);
print_r($result);
输出的结果:Array ( [11] => aaada [22] => bbbb [33] => cccc [44] => cccc1 )
键名33 和 55 的值完全一样的时候,后者会被干掉

如果你要的是键名和值完全一致的时候才删除一个的话,似乎不能,因为键名是不允许重复的
听你的情况似乎数据量很大,建议你使用 array_flip()函数

【php中,删除数组中重复元素有一个可用的函数,那就是array_unique(), 但是它并不是一个最高效的方法,使用array_flip()函数将比array_uniqure()在速度上高出五倍左右。】

 例子:$input=array("11"=>"aaaa","22"=>"bbbb","33"=>"cccc","11"=>"aaada","44"=>"cccc1","55"=>"cccc");

$arr1 = array_flip(array_flip($input));

print_r($arr1);

输出的结果:Array ( [11] => aaada [22] => bbbb [55] => cccc [44] => cccc1 )

请先登录再发表讨论。 2024-04-30

天涯网魂
3 杠 5 星
TA 的文章
TA 的随言
TA 的资源链