Как найти повторяющиеся значения в массиве
Короткий ответ
Посчитайте, сколько раз встречается каждое значение, и оставьте те, что больше одного:
<?php
$emails = ['a@x.com', 'b@x.com', 'a@x.com', 'c@x.com', 'b@x.com'];
$duplicates = array_keys(array_filter(array_count_values($emails), fn ($count) => $count > 1));
echo implode(', ', $duplicates);Результат:
a@x.com, b@x.comЕсть ли повторы вообще
Сравните длину массива с длиной массива без повторов:
<?php
$ids = [3, 7, 3, 9];
var_dump(count($ids) !== count(array_unique($ids)));Результат:
bool(true)Функции из этого ответа
- array_count_values — Считает, сколько раз встречается каждое значение.
- array_filter — Оставляет в массиве элементы, прошедшие проверку.
- array_unique — Удаляет из массива повторяющиеся значения.