Убрать из массива повторяющиеся элементы

(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() и типы:

Задача

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

Похожие задачи

Решение

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

Читайте также:  Прошивка gopro hero 3 black edition

Пусть исходный массив присвоен переменной 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-й индекс" Посмотреть все в категории Работа с Массивом, Структурой, Соответствием