返回数组的第一个重复元素的最佳方法

Fer*_*ero 8 php arrays

这是一个面试问题:

将第一个重复元素从整数数组中返回的最佳方法是什么?

例:

给定一个数组[12, 46, 244, 0, 12, 83, 48, 98, 233, 83, 26, 91, 119, 148, 98].

这种情况下的返回值是12.

如何才能做到这一点?

Hai*_*vgi 11

我认为如果你看一下性能,foreach循环就会更快

# temp array
$array_help = array();

# run over the array
foreach ($array as $val) {

    if (isset($array_help[$val]))
     # found if is set already !
        return $val;

    else
       # its the first time this value appear
       $array_help[$val] = 1;
}
Run Code Online (Sandbox Code Playgroud)


kap*_*apa 9

这将为您提供所有重复值及其原始位置:

$diff = array_diff_assoc($array, array_unique($array));
var_dump($diff);
Run Code Online (Sandbox Code Playgroud)

结果:

array(3) { 
  [4]=> int(12) 
  [9]=> int(83)
  [14]=> int(98) 
} 
Run Code Online (Sandbox Code Playgroud)