56 votes

Vérifier et renvoyer le tableau des doublons php

Je voudrais vérifier si mon tableau a des doublons et renvoyer les valeurs doublées dans un tableau. Je veux que cela soit aussi efficace que possible.

Exemple :

$array = array( 1, 2, 2, 4, 5 );
function return_dup($array); // should return 2

$array2 = array( 1, 2, 1, 2, 5 );
function return_dup($array2); // should return an array with 1,2

De plus, le tableau initial a toujours une longueur de 5 positions

116voto

user187291 Points 28951

Ce sera ~100 fois plus rapide que array_diff

$dups = array();
foreach(array_count_values($arr) as $val => $c)
    if($c > 1) $dups[] = $val;

42voto

Gumbo Points 279147

Vous pouvez obtenir la différence entre le tableau original et une copie sans doublons en utilisant array_unique y array_diff_assoc :

array_diff_assoc($arr, array_unique($arr))

10voto

JAL Points 11164
function array_dup($ar){
   return array_unique(array_diff_assoc($ar,array_unique($ar)));
}

Ça devrait faire l'affaire.

6voto

Vous pouvez faire comme ça :

function showDups($array)
{
  $array_temp = array();

   foreach($array as $val)
   {
     if (!in_array($val, $array_temp))
     {
       $array_temp[] = $val;
     }
     else
     {
       echo 'duplicate = ' . $val . '<br />';
     }
   }
}

$array = array(1,2,2,4,5);
showDups($array);

Sortie :

duplicate = 2

2voto

Ronn0 Points 2080
function returndup($array) 
{
    $results = array();
    $duplicates = array();
    foreach ($array as $item) {
        if (in_array($item, $results)) {
            $duplicates[] = $item;
        }

        $results[] = $item;
    }

    return $duplicates;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X