Count of Duplicate Elements in an Array in PHP

How do I count occurrence of duplicate items in array

array_count_values, enjoy :-)

$array = array(12,43,66,21,56,43,43,78,78,100,43,43,43,21);
$vals = array_count_values($array);
echo 'No. of NON Duplicate Items: '.count($vals).'<br><br>';
print_r($vals);

Result:

No. of NON Duplicate Items: 7
Array
(
[12] => 1
[43] => 6
[66] => 1
[21] => 2
[56] => 1
[78] => 2
[100] => 1
)

count of duplicate elements in an array in php

You can adopt this trick; map each item of the array (which is an array itself) to its respective ['lid'] member and then use array_count_value() to do the counting for you.

array_count_values(array_map(function($item) {
return $item['lid'];
}, $arr);

Plus, it's a one-liner, thus adding to elite hacker status.

Update

Since 5.5 you can shorten it to:

array_count_values(array_column($arr, 'lid'));

Count duplicate values in an array

Add this at the end of your code to only have duplicates in $count_values

$total_duplicates = 0;
foreach ($count_values as $key=>$count) {
if($count<=1){
unset($count_values[$key]);
}else{
$total_duplicates += $count;
}
}

This will remove any entries that are not duplicate (occuring once) via unset().
Also $total_duplicates will give you the total count of duplicates.

To output that as html do this:

echo '<p>You have '.$total_duplicates.' duplicates.</p>';
foreach ($count_values as $key=>$count) {
echo '<li>'.$key.' '.$count.'</li>';
}

Count of duplicate values in array php

Solved it without fancy stuff, but it should work:

/**
* Check if value exists in array
*/
function value_exists($array, $value) {
$count = 0;
foreach($array as $v) {
if($v['Num'] == $value) {
$count++;
}
}
if ($count > 1) {
return $count;
}
}

$duplicated = array();
foreach ($Num as $key => $array ) {
if($count = value_exists($Num, $array['Num'] )) {
$duplicated[] = $array['Num'];
}
}

echo 'Duplicated: ' . count($duplicated);

Count duplicate values in PHP array

You can achieve this with array_count_values.

$values = array_count_values($arr2);
foreach ($arr1 as $k => $val) {
if (array_key_exists($val, $values) && $values[$val] >= 3) {
echo 'Obsazeno <br>';
} else {
echo $val . '<br>';
}
}

Get count of all duplicate values between two arrays

If I understand correctly...

array_sum(array_intersect($array1, $array2));

PHP - Count duplicate values within two dimensional array, then display only unique values with the count

If you are using PHP >= 5.5, you can use array_column(), in conjunction with array_count_values():

$colors = array_count_values(array_column($log, 0));
$materials = array_count_values(array_column($log, 1));

See demo


Or, if you're not using PHP >= 5.5, this will work in PHP 4, 5:

$colors = $materials = array();
foreach ($log as $a){
$colors[] = $a[0];
$materials[] = $a[1];
}

$colors = array_count_values($colors);
$materials = array_count_values($materials);

See demo 2


Click here for sample use case that will work with either method.

Count the occurrences of each value in an array

so simple , php have function

$a=array("Cat","Dog","Horse","Dog");
print_r(array_count_values($a));

The output of the code above will be:

Array ( [Cat] => 1 [Dog] => 2 [Horse] => 1 )  


Related Topics



Leave a reply



Submit