Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как найти повторяющиеся значения в массиве

Короткий ответ

Посчитайте, сколько раз встречается каждое значение, и оставьте те, что больше одного:

<?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 — Удаляет из массива повторяющиеся значения.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.