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

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

Решение
Если массив уже заполнен, используйте функцию 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().

Оцените статью: (0 голосов)
0 5 0

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

Вернуться в раздел: PHP / 4. Массивы