1

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

更新:我对重复值不感兴趣。我想知道“它包含重复值”还是“它不包含重复值”。

4

5 回答 5

3

试试这个:

if (count(array_unique($arr)) == count($arr)) 
  echo "Array does not contain duplicate elements"; 
else
  echo "Array contains duplicate elements";
于 2013-02-28T06:01:13.720 回答
1

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

count(array_unique($emails)) == count($emails)
于 2013-02-28T06:01:39.173 回答
1

这就是我从数组中提取重复值的方式

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

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

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

count(array_unique($array)) == count($array)

于 2013-02-28T06:04:55.477 回答
1

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

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 )

于 2013-02-28T06:14:43.007 回答
0

您应该使用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...
)
于 2013-02-28T06:04:05.963 回答