Разработчику. Сборник рецептов PHP
Задавайте вопросы

Удаление двойных элементов из массива

Вернуться назад

Задача

Необходимо удалить дубликаты из массива.

Решение

Если массив уже заполнен, используйте функцию array_unique(), которая возвращает новый массив, не содержащий двойных значений:

$unique = array_unique($array);

Ниже показан способ получения необходимого результата в процессе создания числовых массивов:

foreach ($_REQUEST[ ' fruits ' ] as $fruit) {
     if (!in_array($array, $fruit)) { $array[ ] = $fruit; }
}

Тот же метод для ассоциативных массивов:

foreach ($_REQUEST['fruits'] as $fruit) {
     $array[$fruit] = $fruit;
}

Обсуждение

Если процесс завершен, то применение функции array_unique() является лучшим способом удаления дубликатов. Но если вы внутри цикла, то предупредить появление двойных элементов можно с помощью проверки, не находятся ли уже эти элементы в массиве.

Создание гибридного массива, в котором ключ и значение каждого элемента одинаковы, является методом даже более быстрым, чем использование функцииin_array(). Это исключает линейную проверку с помощью функции in_array(), но в то же время позволяет воспользоваться преимуществами семейства функций для работы с массивами, которые оперируют со значениями массива, а не с ключами.

В действительности, быстрее использовать метод ассоциативного массива, а затем применить функцию array_values() к результату (или, коли на то пошло, array_keys(), но array_values() немного быстрее), чем непосредственно создавать числовой массив через голову функции in_array().

См. также

Документацию по функции array_unique() на http://www.php.net/array-unique.

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования


Рейтинг Сайтов ДОСКИ.РУ