检查并返回重复数组php

新手上路,请多包涵

我想检查我的数组是否有任何重复并在数组中返回重复的值。我希望这尽可能高效。

例子:

 $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

初始数组也总是 5 个位置长

原文由 NVG 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 584
2 个回答

这将比 array_diff 快约 100 倍

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

原文由 user187291 发布,翻译遵循 CC BY-SA 2.5 许可协议

根据您的问题,如果您有重复的值,那么您必须返回这些值。我为这个问题写了一个函数。如果您的数组有重复值,则此函数在数组中返回这些值,否则返回空值。这是一个例子:

 function containsDuplicate($array_values) {
    $duplicates_values = [];
    for($i = 0; $i < count($array_values); $i++){
        for ($j=$i+1; $j <count($array_values) ; $j++) {
            if ($array_values[$i] == $array_values[$j]) {
                $duplicates_values[] =  $array_values[$i];
            }
        }

    }
    if(count($duplicates_values) > 0){
        return $duplicates_values;
    }
}

原文由 Yeasin Arafat 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题