查找有多少重复的数组元素



这是数组和代码

 $array = array(1, 3, 3, 7, 9, 9, 9, 9, 11, 11, 12, 14); 
 $c = array_count_values($array);
 print_r($c);

我得到的输出像:

Array
(
    [1] => 1
    [3] => 2
    [7] => 1
    [9] => 4
    [11] => 2
    [12] => 1
    [14] => 1
)

我想得到大于或等于2的值的数量,这就是([3],[9],[11]):

Duplicate groups: 3

使用array_filter函数过滤掉重复项:

$array = array(1, 3, 3, 7, 9, 9, 9, 9, 11, 11, 12, 14); 
$c = array_count_values($array);
$c = array_filter($c, function($v){return $v > 1;});
$c = count($c);
echo "Duplicate groups: $c";

我想得到>2([3],[9],[11])的值的数量:

你的意思是大于或等于2。在这种情况下,它将我们引向>=:

$array = array(1, 3, 3, 7, 9, 9, 9, 9, 11, 11, 12, 14);
$c = array_count_values($array);
$r = array();
foreach($c as $k => $v) {
    if($v >= 2) {
        $r[$k] = $v;
    }
}
print "Duplicate groups: " . count($r);

改进版:

$array = array(1, 3, 3, 7, 9, 9, 9, 9, 11, 11, 12, 14); 
$array1 = array_count_values($array);
$array2 = array();
foreach($array1 as $key => $value){
  if($value > 1){
    $array2[$key] = $value;
  }
}
print "Duplicate groups: ".count($array2);

最新更新