检查数组是否包含重复值的有效方法是什么?我有一个包含电子邮件的数组。我想知道是否有任何电子邮件 ID 重复。
更新:我对重复值不感兴趣。我想知道“它包含重复值”还是“它不包含重复值”。
试试这个:
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)
这就是我从数组中提取重复值的方式
<?php
function array_not_unique( $a = array() )
{
return array_diff_key( $a , array_unique( $a ) );
}
?>
它返回重复的条目。这是最简单有效的方法。
当你编辑你的帖子时,最有效的方法是只知道它是否有重复,这是大多数人建议的方式。
count(array_unique($array)) == count($array)
如果有人想要不区分大小写的数组唯一值,请在下面尝试
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));
// 结果数组 ( [1] => test@google.com [2] => test@hotmail.com )
您应该使用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...
)