Проверьте и возвратите массив дубликатов php

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

Example :$array = array(1,2,2,4,5)
function returndup($array) should return 2 ;

if array is array(1,2,1,2,5);
it should return an array with 1,2

Также начальный массив является всегда 5 положениями долго

24
задан Carl Manaster 10 August 2010 в 14:34
поделиться

6 ответов

это будет ~ в 100 раз быстрее, чем array_diff

$dups = array();
foreach(array_count_values($arr) as $val => $c)
    if($c > 1) $dups[] = $val;
67
ответ дан 28 November 2019 в 22:11
поделиться

Вы можете увидеть разницу исходный массив и его копия без дубликатов с использованием array_unique и array_diff_assoc :

array_diff_assoc($arr, array_unique($arr))
18
ответ дан 28 November 2019 в 22:11
поделиться

Вы можете сделать это так:

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);

Вывод:

duplicate = 2
4
ответ дан 28 November 2019 в 22:11
поделиться
function array_dup($ar){
   return array_unique(array_diff_assoc($ar,array_unique($ar)));
}

Должны помочь.

6
ответ дан 28 November 2019 в 22:11
поделиться
function returndup($array) 
{
    $results = array();
    $duplicates = array();
    foreach ($array as $item) {
        if (in_array($item, $results)) {
            $duplicates[] = $item;
        }

        $results[] = $item;
    }

    return $duplicates;
}
1
ответ дан 28 November 2019 в 22:11
поделиться

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

function returndup($arr)
{
  return array_diff_key($arr, array_unique($arr));
}
1
ответ дан 28 November 2019 в 22:11
поделиться
Другие вопросы по тегам:

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