php - How do I count occurrence of duplicate items in array

Solution:
$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
)
Answer
Solution:
if you want to try without'array_count_values'
you can do with a smart way here
<?php
$input= array(12,43,66,21,56,43,43,78,78,100,43,43,43,21);
$count_values = array();
foreach ($input as $a) {
@$count_values[$a]++;
}
echo 'Duplicates count: '.count($count_values);
print_r($count_values);
?>
Answer
Solution:
Simplest solution (that's where PHP rocks) - ONLY duplicates:
$r = array_filter(array_count_values($array), function($v) { return $v > 1; });
and check:
print_r($r);
Result$r
:
[43] => 6
[21] => 2
[78] => 2
Answer
Solution:
If you have a multi-dimensional array you can use on PHP 5.5+ this:
array_count_values(array_column($array, 'key'))
which returns e.g.
[
'keyA' => 4,
'keyB' => 2,
]
Answer
Solution:
I actually wrote a function recently that would check for a substring within an array that will come in handy in this situation.
function strInArray($haystack, $needle) {
$i = 0;
foreach ($haystack as $value) {
$result = stripos($value,$needle);
if ($result !== FALSE) return TRUE;
$i++;
}
return FALSE;
}
$array = array(12,43,66,21,56,43,43,78,78,100,43,43,43,21);
for ($i = 0; $i < count($array); $i++) {
if (strInArray($array,$array[$i])) {
unset($array[$i]);
}
}
var_dump($array);
Answer
Solution:
You can also use it with text items array, u will get number of duplicates properly, but PHP shows
Warning: array_count_values(): Can only count STRING and INTEGER values!
$domains =
array (
0 => 'i1.wp.com',
1 => 'i1.wp.com',
2 => 'i2.wp.com',
3 => 'i0.wp.com',
4 => 'i2.wp.com',
5 => 'i2.wp.com',
6 => 'i0.wp.com',
7 => 'i2.wp.com',
8 => 'i0.wp.com',
9 => 'i0.wp.com' );
$tmp = array_count_values($domains);
print_r ($tmp);
array (
'i1.wp.com' => 2730,
'i2.wp.com' => 2861,
'i0.wp.com' => 2807
)
Answer
Solution:
Count duplicate element of an array in PHP without using in-built function
$arraychars=array("or","red","yellow","green","red","yellow","yellow");
$arrCount=array();
for($i=0;$i<$arrlength-1;$i++)
{
$key=$arraychars[$i];
if($arrCount[$key]>=1)
{
$arrCount[$key]++;
} else{
$arrCount[$key]=1;
}
echo $arraychars[$i]."<br>";
}
echo "<pre>";
print_r($arrCount);
Answer
Solution:
There is a magical function PHP is offering to you it called in_array().
Using parts of your code we will modify the loop as follows:
<?php
$array = array(12,43,66,21,56,43,43,78,78,100,43,43,43,21);
$arr2 = array();
$counter = 0;
for($arr = 0; $arr < count($array); $arr++){
if (in_array($array[$arr], $arr2)) {
++$counter;
continue;
}
else{
$arr2[] = $array[$arr];
}
}
echo 'number of duplicates: '.$counter;
print_r($arr2);
?>
The above code snippet will return the number total number of repeated items i.e. form the sample array 43 is repeated 5 times, 78 is repeated 1 time and 21 is repeated 1 time, then it returns an array without repeat.
Answer
Solution:
You can do it using foreach loop. (Demo)
$array = array(1,2,3,1,2,3,1,2,3,4,4,5,6,4,5,6,88);
$set_array = array();
foreach ($array as $value) {
$set_array[$value]++;
}
print_r($set_array);
Output:
Warning: Undefined array key 1 in /in/aGPqe on line 6
Warning: Undefined array key 2 in /in/aGPqe on line 6
Warning: Undefined array key 3 in /in/aGPqe on line 6
Warning: Undefined array key 4 in /in/aGPqe on line 6
Warning: Undefined array key 5 in /in/aGPqe on line 6
Warning: Undefined array key 6 in /in/aGPqe on line 6
Warning: Undefined array key 88 in /in/aGPqe on line 6
Array
(
[1] => 3
[2] => 3
[3] => 3
[4] => 3
[5] => 2
[6] => 2
[88] => 1
)
Answer
Solution:
I came here from google looking for a way to count the occurrence of duplicate items in an array. Here is the way to do it simply:
$colors = ["red", "green", "blue", "red", "yellow", "blue"];
$unique_colors = array_unique($colors); // ["red", "green", "blue", "yellow"]
$duplicates = count($colors) - count($unique_colors); // 6 - 4 = 2
if ($duplicates == 0) {
echo "There are no duplicates";
}
echo "No. of Duplicates: " . $duplicates;
// Output: No. of Duplicates are: 2
How array_unique() works?
It elements all the duplicates. ex: Lets say we have an array as follows -
$cars = array( [0]=>"lambo", [1]=>"ferrari", [2]=>"Lotus", [3]=>"ferrari", [4]=>"Bugatti");
When you do$cars = array_unique($cars);
cars will have only following elements.$cars = array( [0]=>"lambo", [1]=>"ferrari", [2]=>"Lotus", [4]=>"Bugatti");
To read more: https://www.php.net/manual/en/function.array-unique.php
Answer
Solution:
this code will return duplicate value in same array
$array = array(12,43,66,21,56,43,43,78,78,100,43,43,43,21);
foreach($arr as $key=>$item){
if(array_count_values($arr)[$item] > 1){
echo "Found Matched value : ".$item." <br />";
}
}
Answer
Solution:
$search_string = 4;
$original_array = [1,2,1,3,2,4,4,4,4,4,10];
$step1 = implode(",", $original_array); // convert original_array to string
$step2 = explode($search_string, $step1); // break step1 string into a new array using the search string as delimiter
$result = count($step2)-1; // count the number of elements in the resulting array, minus the first empty element
print_r($result); // result is 5
Answer
Solution:
$input = [1,2,1,3,2,4,10];
//if give string
//$input = "hello hello how are you how hello";
//$array = explode(' ',$input);
$count_val = [];
foreach($array as $val){
$count_val[$val]++;
}
print_r($count_val);
//output ( [1] => 2 [2] => 2 [3] => 1 [4] => 1 [10] => 1 )
Share solution ↓
Additional Information:
Link To Answer People are also looking for solutions of the problem: property [id] does not exist on this collection instance.
Didn't find the answer?
Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.
Similar questions
Find the answer in similar questions on our website.
Write quick answer
Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.