@Hannskod

Как получить список повторяющихся элементов массива?

Добрый день как получить список повторяющихся элементов массива ?
  • Вопрос задан
  • 2386 просмотров
Пригласить эксперта
Ответы на вопрос 3
@bkosun
$values = array('a', 'a', 'b', 'c', 'c');

$result = array_keys(array_filter(array_count_values($values), function($v){
   return $v > 1;
}));

print_r($values);
print_r($result);

Array
(
    [0] => a
    [1] => a
    [2] => b
    [3] => c
    [4] => c
)
Array
(
    [0] => a
    [1] => c
)
Ответ написан
@xtrime
senior web developer: php, mysql, angular
Первый пример тут: php.net/manual/ru/function.array-count-values.php

Пример #1 Пример использования array_count_values()

<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>


Результат выполнения данного примера:

Array
(
    [1] => 2
    [hello] => 2
    [world] => 1
)


Потом обходим результат выполнения функции через foreach или array_filter и выводим только те ключи, у которых значение больше 1.

<?php
$array = array(1, "hello", 1, "world", "hello");
$array_count = array_count_values($array);
$duplicates = [];
foreach ($array_count as $k=>$v){
    if ($v > 1) $duplicates[] = $k;
}
print_r($duplicates);
?>
Ответ написан
Возможно вам поможет:
function array_duplicates($arr)
{
    $arrUnique = array_unique(array_map("strtoupper", $arr));
    $duplicates = array_diff($arr, $arrUnique);
    return $duplicates;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы