Удаление дубликатов с помощью array_unique
-
10-10-2019 - |
Вопрос
Я создал загрузчик изображения, который работает от удаленного, поэтому всякий раз, когда пользователь входит в кучу ссылок, я хочу предотвратить добавление дублирующих ссылок, чтобы изображение не было скопировано дважды и удаляется, чтобы оно оставляло ссылки уникальными без каких -либо дубликаты.
$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
Разве не удаляет дубликаты?
Решение
array_unique()
возврат Новый массив, он не изменяет массив на месте:
Берет массив ввода и возвращает новый массив без дублирования значений.
$unique_images = array_unique($unique_images);
Другие советы
array_unique
возврат Отфильтрованный массив, вместо того, чтобы изменить его. Замените свою последнюю строку на:
$unique_images = array_unique($unique_images)
И это должно работать.
Вы можете просто сделать:
$unique_images = array_unique(explode("\n", $links));
А array_unique
Функция возвращает новый массив с удаленными дубликатами. Таким образом, вам нужно собрать его возвратную стоимость.
Также explode
возвращает вам множество к которому вы можете напрямую кормить array_unique
.
$unique_images = array_unique($unique_images);
В противном случае вы просто отбросите результат