Удаление дубликатов с помощью array_unique - PullRequest
4 голосов
/ 21 октября 2010

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

$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 голосов
/ 21 октября 2010

array_unique возвращает отфильтрованный массив вместо его изменения. Измените свою последнюю строку на:

$unique_images = array_unique($unique_images)

и оно должно работать.

3 голосов
/ 21 октября 2010

array_unique() возвращает новый массив, он не изменяет массив на месте:

Принимает входной массив и возвращает новый массив без повторяющихся значений.

$unique_images = array_unique($unique_images);
2 голосов
/ 21 октября 2010

Вы можете просто сделать:

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

Функция array_unique возвращает новый массив с удаленными дубликатами.Поэтому вам нужно собрать его возвращаемое значение.

Также explode возвращает вам массив , который вы можете напрямую передать array_unique.

1 голос
/ 21 октября 2010
$unique_images = array_unique($unique_images);

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

...