我创建了一个远程工作的图像上传器,所以每当用户输入一堆链接时,我想防止添加重复的链接,这样图像就不会被复制两次而被删除所以它会留下链接独一无二,没有任何重复。
$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
不会删除任何重复项?
答案 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);
否则你只是丢弃结果