如何在PHP中检查非关联数组是否唯一?

3

我想知道数组$arr是否有重复元素。

3个回答

10

array_unique()应该可以解决:

if (count(array_unique($arr)) == count($arr)) 
  echo "Array does not contain duplicate elements"; 
else
  echo "Array contains duplicate elements";

3

0

我不确定是否有内置函数可以实现这个功能。但是你可以这样做:

if (count($arr) == count(array_unique($arr))
{
    //array has no unique elements
}

4
数组不允许有重复的键。 :) - deceze
关于 deceze 的问题:这也是为什么 array_flip(array_flip($arr))array_unique($arr) 有相同的结果(而且速度更快)的原因。 - pinkgothic
@pinkgothic 不错的技巧,但为了可读性,我仍然会选择使用 array_unique。 :) - deceze
@deceze:同意。由于数组键类型受限,array_flip() 版本也不总是有效!但如果您的数组中只使用 intstring 值,则可以使用它。这很好,因为如果您有非常大的数组(比如说,> 100个元素),array_unique() 的速度会非常慢。:( - pinkgothic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接