Intereting Posts
Получение всей проверки оплаты счетов в базе данных Quickbooks Ошибки базы данных PHP PDO Специальные символы Основной вопрос группировки массива PHP MySQL Как зашифровать пароль перед отправкой из формы входа? Загрузка API Карт Google через AJAX, ошибка консоли nginx: 502 Bad Gateway с curl / https на Mac OS X Как создавать видео с изображений с помощью php? Неопределенный индекс Если я не проверю флажок Prestashop добавляет токен в файл ajax Ошибка «Только оригинальный поток, создавший иерархию представлений, может коснуться его представлений» в Android Используя .htaccess, запретите пользователям доступ к каталогам ресурсов и тем самым разрешить доступ к ресурсам исходного кода Регулярное выражение для адреса электронной почты на арабском языке Контактная форма PHP перенаправление не работает Функция вызова Codeigniter в контроллере без index.php PHP не отображает ошибки – Внутренняя ошибка сервера (500)

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

У меня есть отсортированный массив, который содержит имена людей. В этом массиве много имен, которые одинаковы.

Я хочу выводить только дубликаты имен.

Пример,

входной массив:

 массив
 (
     [0] => Аббас
     [1] => Абхай
     [2] => Абхинав
     [3] => Абхишек
     [4] => Адитья
     [5] => Ахмед
     [6] => Ахмед
     [7] => Ajay
     [8] => Ajay
 }

Он должен вернуться

 массив
 (
     [5] => Ахмед
     [6] => Ахмед
     [7] => Ajay
     [8] => Ajay
 }

Related of "Показывать только повторяющиеся элементы из массива"

Используйте этот код:

# assuming your original array is $arr array_unique(array_diff_assoc($arr, array_unique($arr))); 

Он будет возвращать уникальные дубликаты, но если вы хотите не уникальные дубликаты, используйте:

 array_diff_assoc($arr, array_unique($arr)); 

EDIT: на основе ваших комментариев попробуйте этот код:

 $uarr = array_unique($arr); var_dump(array_diff($arr, array_diff($uarr, array_diff_assoc($arr, $uarr)))); 

ВЫВОД

 array(4) { [5]=> string(5) "Ahmed" [6]=> string(5) "Ahmed" [7]=> string(4) "Ajay" [8]=> string(4) "Ajay" } 

Вы можете использовать эту функцию http://php.net/manual/en/function.array-unique.php, чтобы получить массив без дублирования значений, затем вы можете использовать эту функцию http://www.php.net/manual /en/function.array-intersect.php, чтобы найти различия, поддерживая связь ключей.

Попробуйте array_reduce:

http://php.net/manual/en/function.array-reduce.php

Создайте обратный вызов, который заполняет массив, используя значения из $ input как keys, и соответственно увеличивает их. А затем отфильтруйте те, которые появляются более одного раза.

Используя array_count_values() чтобы подсчитать все в массиве, затем фильтруйте полученный массив, чтобы показать только те, где больше 1:

 $input = array(.... your names here ....); $counts = array_count_values($input); $duplicates = array_filter($counts, function element { return ($element > 1) }); 

Делать это с головы, но должно быть достаточно, чтобы вы начали.