Вопрос

Я создал загрузчик изображения, который работает от удаленного, поэтому всякий раз, когда пользователь входит в кучу ссылок, я хочу предотвратить добавление дублирующих ссылок, чтобы изображение не было скопировано дважды и удаляется, чтобы оно оставляло ссылки уникальными без каких -либо дубликаты.

$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);

В противном случае вы просто отбросите результат

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top