4

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

$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

4 回答 4

4

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

$unique_images = array_unique($unique_images)

它应该可以工作。

于 2010-10-21T14:18:24.917 回答
3

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

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

$unique_images = array_unique($unique_images);
于 2010-10-21T14:17:51.857 回答
2

你可以这样做:

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

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

还会explode返回一个数组,您可以直接将其提供给array_unique.

于 2010-10-21T14:18:42.090 回答
1
$unique_images = array_unique($unique_images);

否则你只是丢弃结果

于 2010-10-21T14:17:44.680 回答