Содержание:
(PHP 4 >= 4.0.1, PHP 5, PHP 7)
array_unique — Убирает повторяющиеся значения из массива
Описание
Принимает входной array и возвращает новый массив без повторяющихся значений.
Обратите внимание, что ключи сохранятся. array_unique() сначала сортирует значения как строки, сохраняет первый встреченный ключ для каждого значения и игнорирует все последующие ключи. Это не означает, что первый ключ каждого значения неотсортированного array будет сохранён.
Замечание: Два элемента считаются одинаковыми в том и только в том случае, если (string) $elem1 === (string) $elem2. Другими словами: если у них одинаковое строковое представление, то будет использован первый элемент.
Список параметров
Можно использовать необязательный второй параметр sort_flags для изменения поведения сортировки с помощью следующих значений:
Виды сортировок флагов:
- SORT_REGULAR – нормальное сравнение элементов (типы не меняются)
- SORT_NUMERIC – элементы сравниваются как числа
- SORT_STRING – элементы сравниваются как строки
- SORT_LOCALE_STRING – сравнивает элементы как строки, с учетом текущей локали.
Возвращаемые значения
Возвращает отфильтрованный массив.
Список изменений
Версия | Описание |
---|---|
5.2.10 | Значение по умолчанию параметра sort_flags изменено обратно на SORT_STRING . |
5.2.9 | Добавлен необязательный параметр sort_flags , по умолчанию равный SORT_REGULAR . До версии 5.2.9, это функция сортировала массив с помощью SORT_STRING . |
Примеры
Пример #1 Пример использования array_unique()
Результат выполнения данного примера:
Пример #2 array_unique() и типы:
Задача
Из одномерного массива удалить все повторяющиеся элементы (дубликаты) так, чтобы каждое значение встречалось в массиве только один раз.
Похожие задачи
Решение
Проще всего решить данную задачу, используя второй массив, в котором и будут содержаться уникальные элементы.
Пусть исходный массив присвоен переменной a . В нем N – элементов. Второй массив обозначим b , количество элементов – M (сколько их мы не знаем, поэтому это переменная, а не константа).
Запишем первый элемент массива a в массив b. Переменной M присвоим 1.
Начинаем в цикле перебирать массив a, начиная со второго элемента и до конца (до N). Заранее предполагаем, что очередной элемент не встречается в массиве b, т. е. он не является повторяющимся. Отражаем это предположение в присвоении булевой переменной f значение True.
Во вложенном цикле перебираем все элементы массива b (до М). Если текущий элемент массива a совпадает по значению с каким-либо элементом массива b, то устанавливаем f в значение False. Это значит, что нам встретился дубликат, который должен быть удален.
После всех итераций внутреннего цикла проверяем значение f. Если оно осталось True, то элемент уникальный, его следует записать в массив b. Перед этим увеличиваем значение M на единицу (ведь количество элементов увеличилось).
Как удалить повторяющиеся элементы массива?
Похожие FAQ
Еще в этой же категории
Как Свернуть Массив? 2
НовыйМассив = Новый Массив; Соответствие = Новый Соответствие; Для каждого ЭлементМассива Из Массив Цикл Соответствие.Вставить(ЭлементМассива); КонецЦикла; Для каждого КлючИЗначение Из Соответствие Цикл НовыйМассив.Добавить(КлючИЗначение.Знач Структура
Создать структуру и добавить элементы 2
// Создание структуры СозданнаяСтруктура = Новый Структура; // Создание структуры и добавление элементов СтруктураОтбора = Новый Структура; СтруктураОтбора.Вставить(" Качество" , Качество); СтруктураОтбора.Вставить(" Номенклатура" , Номенкла Как создать Фиксированный массив? 2
ФиксированныйМассив , элементами которого могут быть значения перечисленных типов, включая ФиксированныйМассив. ФиксированныйМассив не допускает никаких изменений своего содержимого и может быть сконструирован из объекта типа " Массив" ; А если про Небольшой нюанс при создании двумерного массива 2
Наткнулся на инструкцию по созданию массива: ДвумМассив = Новый Массив; ОднмМассив = Новый Массив(2); //И дальше – заполнять ОднмМассив = "1-й индекс"; ОднмМассив = "1-е значение"; ДвумМассив.Добавить(ОднмМассив); ОднмМассив = "2-й индекс" Посмотреть все в категории Работа с Массивом, Структурой, Соответствием