使用array_unique删除重复项

时间:2010-10-21 14:15:03

标签: php arrays array-unique

我创建了一个远程工作的图像上传器,所以每当用户输入一堆链接时,我想防止添加重复的链接,这样图像就不会被复制两次而被删除所以它会留下链接独一无二,没有任何重复。

$break = explode("\n", $links);
$count = count($break);

$unique_images = array();

for($i = 0; $i < $count; $i++)
{
    array_push($unique_images, $break[$i]); 
}

array_unique($unique_images);

其余的代码可以工作,但我只是不知道为什么它不起作用,我也尝试了foreach循环,但这也无济于事。

我将error_reporting设置为E_ALL,但没有错误。我在数组上使用var_dump,我得到了这个:

array(3) 
{ 
     [0]=> string(48) "http://localhost:8888/images/img/wallpaper-1.jpg" 
     [1]=> string(48) "http://localhost:8888/images/img/wallpaper-1.jpg" 
     [2]=> string(48) "http://localhost:8888/images/img/wallpaper-1.jpg" 
} 

为什么array_unique不会删除任何重复项?

4 个答案:

答案 0 :(得分:4)

array_unique 返回已过滤的数组,而不是更改它。将您的最后一行更改为:

$unique_images = array_unique($unique_images)

它应该有效。

答案 1 :(得分:3)

array_unique() 返回一个新数组,它不会修改数组:

  

获取一个输入数组并返回一个没有重复值的新数组。

$unique_images = array_unique($unique_images);

答案 2 :(得分:2)

你可以这样做:

$unique_images = array_unique(explode("\n", $links));

array_unique函数返回一个删除了重复项的新数组。所以你需要收集它的回报值。

另外explode会返回数组,您可以直接将其提供给array_unique

答案 3 :(得分:1)

$unique_images = array_unique($unique_images);

否则你只是丢弃结果