php中检查数组是否包含重复值的有效方法是什么?


what is the efficient method to check an array contains duplicate values in php?

检查数组包含重复值的有效方法是什么?我有一个包含电子邮件的数组。我想知道是否有重复的邮箱id。

更新:我对重复值不感兴趣。我想知道是"It contains duplicate value"还是"It doesn't contain duplicate value"

试试这个:

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

一种简单有效的方法是使数组唯一,然后将其与原始数组进行比较,看看是否有任何元素被删除:

count(array_unique($emails)) == count($emails)

如果有人想要不区分大小写的数组唯一值,请尝试

function array_iunique($array) {
return array_intersect_key($array,array_unique(
                array_map('strtolower',$array) ) );
}

$array[1] = "test@google.com";
$array[2] = "test@hotmail.com";
$array[3] = "TEST@google.com";
$array[4] = "Test@hotmail.com";
//print_r(array_unique($array));
print_r(array_iunique($array));

//result Array ([1] => test@google.com [2] => test@hotmail.com)

如何从数组中提取重复值

  <?php
function array_not_unique( $a = array() )
{
  return array_diff_key( $a , array_unique( $a ) );
}
?>

返回重复条目。这是最简单有效的方法。

当你编辑你的帖子时,最有效的方法是知道它是否重复,这是大多数人建议的方法。

计数(array_unique(数组)美元)= = count($数组)

您应该使用array_count_values()方法来查找元素的出现次数。这是一种简单有效的方法。

$array = array('a', 'o', 'p', 'b', 'a', 'p', 'k', 'k', 'k');
print_r(array_count_values($array));

输出
Array
(
   [a] => 2
   [o] => 1
   [p] => 2
   etc...
)