Находите дубликаты в многомерном массиве и выводите их - PullRequest
1 голос
/ 30 марта 2020

Я хочу найти дубликаты в многомерном массиве, а затем повторить, у кого есть дубликаты, а у кого нет. Я пробовал этот код.

    $teams = array
  (
  "grupp_A" => array('Arsenal','Arsenal','Barcelona'),
  "grupp_B" => array('Milan','Man United','Barcelona'),
  "grupp_C" => array('Juventus','Barcelona','Barcelona'),
  "grupp_D" => array('Arsenal','Man United','Barcelona')
  );



foreach ( $teams as $key => $val ) {

  foreach($val as $k => $v) {

    if(count(array_unique($k))<count($k))
{
    echo "Array: $v has duplicates<br>";
}
else
{

    echo "Array: $v does not have duplicates<br>";
    }
    }
    }

Тогда я получаю результат

Array: Arsenal has duplicates
Array: Arsenal has duplicates
Array: Barcelona has duplicates
Array: Milan has duplicates
Array: Man United has duplicates
Array: Barcelona has duplicates
Array: Juventus has duplicates
Array: Barcelona has duplicates
Array: Barcelona has duplicates
Array: Arsenal has duplicates
Array: Man United has duplicates
Array: Barcelona has duplicates

Но результат должен выглядеть следующим образом.

Array: grupp_A has duplicates
Array: grupp_C has duplicates
Array: grupp_B does not have duplicates
Array: grupp_D does not have duplicates

Я застрял и не знаю, что я делаю не так, и мне нужна помощь здесь.

Я пробовал этот код с in_array, как предложено.

foreach ( $teams as $key => $val ) {

    if (in_array($key, $val)) {

    echo "Array: $key has duplicates<br>";
}
else
{

    echo "Array: $key does not have duplicates<br>";
    }
    }

, который дал вывод

Array: grupp_A does not have duplicates
Array: grupp_B does not have duplicates
Array: grupp_C does not have duplicates
Array: grupp_D does not have duplicates

Немного ближе, но пока не там.

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Достаточно только одного l oop, так как вы объединяете клубы:

foreach($teams as $group => $clubs)
{
    if( count(array_unique($clubs)) < count($clubs) )
        echo "Group $group has duplicates" . PHP_EOL ;
    else
        echo "Group $group has no duplicates" . PHP_EOL ;
}

Выход:

Группа grupp_A имеет дубликаты

Группа grupp_B не имеет дубликатов

группа grupp_ C имеет дубликаты

группа grupp_D не имеет дубликатов

0 голосов
/ 30 марта 2020

Мне понравился ваш array_unique подход, так что извините за то, что выкинул вас с моим комментарием о in_array.

foreach ($teams as $key => $val) {
    if (count(array_unique($val)) == count($val)) {
        echo $key . " has no duplicates" . PHP_EOL;
    } else {
        echo $key . " has duplicates" . PHP_EOL;
    }
}
...