array_count_values

(PHP 4, PHP 5)

array_count_valuesCounts all the values of an array

Description

array array_count_values ( array $array )

array_count_values() returns an array using the values of array as keys and their frequency in array as values.

Parameters

array

The array of values to count

Return Values

Returns an associative array of values from array as keys and their count as value.

Errors/Exceptions

Throws E_WARNING for every element which is not string or integer.

Examples

Example #1 array_count_values() example

<?php
$array 
= array(1"hello"1"world""hello");
print_r(array_count_values($array));
?>

The above example will output:

Array
(
    [1] => 2
    [hello] => 2
    [world] => 1
)

See Also

  • count() - Count all elements in an array, or something in an object
  • array_unique() - Removes duplicate values from an array
  • array_values() - Return all the values of an array
  • count_chars() - Return information about characters used in a string

Коментарии

array_count_values function does not work on multidimentional arrays.
If $score[][] is a bidimentional array, the command
"array_count_values ($score)" return the error message "Warning: Can only count STRING and INTEGER values!".
2003-01-29 19:42:45
http://php5.kiev.ua/manual/ru/function.array-count-values.html
I couldn't find a function for counting the values with case-insensitive matching, so I wrote a quick and dirty solution myself:

<pre><?php
function array_icount_values($array) {
   
$ret_array = array();
    foreach(
$array as $value) {
        foreach(
$ret_array as $key2 => $value2) {
            if(
strtolower($key2) == strtolower($value)) {
               
$ret_array[$key2]++;
                continue 
2;
            }
        }
       
$ret_array[$value] = 1;
    }
    return 
$ret_array;
}

$ar = array('J. Karjalainen''J. Karjalainen'60'60''J. Karjalainen''j. karjalainen''Fastway''FASTWAY''Fastway''fastway''YUP');
$ar2 array_count_values($ar); // Normal matching
$ar array_icount_values($ar); // Case-insensitive matching
print_r($ar2);
print_r($ar);
?></pre>

This prints:

Array
(
    [J. Karjalainen] => 3
    [60] => 2
    [j. karjalainen] => 1
    [Fastway] => 2
    [FASTWAY] => 1
    [fastway] => 1
    [YUP] => 1
)
Array
(
    [J. Karjalainen] => 4
    [60] => 2
    [Fastway] => 4
    [YUP] => 1
)

I don't know how efficient it is, but it seems to work. Needed this function in one of my scripts and thought I would share it.
2007-02-21 03:40:15
http://php5.kiev.ua/manual/ru/function.array-count-values.html
Here is a Version with one or more arrays, which have similar values in it:
Use $lower=true/false to ignore/set case Sensitiv.

<?php

$ar1
[] = array("red","green","yellow","blue");
$ar1[] = array("green","yellow","brown","red","white","yellow");
$ar1[] = array("red","green","brown","blue","black","yellow");
#$ar1= array("red","green","brown","blue","black","red","green"); // Possible with one or multiple Array

$res array_icount_values ($ar1);
print_r($res);

function 
array_icount_values($arr,$lower=true) {
     
$arr2=array();
     if(!
is_array($arr['0'])){$arr=array($arr);}
     foreach(
$arr as $k=> $v){
      foreach(
$v as $v2){
      if(
$lower==true) {$v2=strtolower($v2);}
      if(!isset(
$arr2[$v2])){
         
$arr2[$v2]=1;
      }else{
           
$arr2[$v2]++;
           }
    }
    }
    return 
$arr2;
}
/*
Will print:
Array
(
    [red] => 3
    [green] => 3
    [yellow] => 4
    [blue] => 2
    [brown] => 2
    [white] => 1
    [black] => 1
)
*/
?>
2010-01-17 13:21:19
http://php5.kiev.ua/manual/ru/function.array-count-values.html
Автор:
The case-insensitive version:

<?php
function array_count_values_ci($array) {
   
$newArray = array();
    foreach (
$array as $values) {
        if (!
array_key_exists(strtolower($values), $newArray)) {
           
$newArray[strtolower($values)] = 0;
        }
       
$newArray[strtolower($values)] += 1;
    }
    return 
$newArray;
}
?>
2013-12-13 18:11:01
http://php5.kiev.ua/manual/ru/function.array-count-values.html
Simple way to find number of items with specific values in multidimensional array:

<?php

$list 
= [
  [
'id' => 1'userId' => 5],
  [
'id' => 2'userId' => 5],
  [
'id' => 3'userId' => 6],
];
$userId 5;

echo 
array_count_values(array_column($list'userId'))[$userId]; // outputs: 2
?>
2017-11-29 15:52:06
http://php5.kiev.ua/manual/ru/function.array-count-values.html
Based on sergolucky96 suggestion 
Simple way to find number of items with specific *boolean* values in multidimensional array:

<?php

$list 
= [
  [
'id' => 1'result' => true],
  [
'id' => 2'result' => true],
  [
'id' => 3'result' => false],
];
$result true;

echo 
array_count_values(array_map(function($v) {return $v?'true':'false';},array_column($list'result')))[$result]
// outputs: 2

?>
2020-05-15 17:15:21
http://php5.kiev.ua/manual/ru/function.array-count-values.html
A cleaner way to use array_count_values() to find boolean counts.

<?php

$list 
= [
  [
'id' => 1'result' => true],
  [
'id' => 2'result' => true],
  [
'id' => 3'result' => false],
];
$result true;

echo 
array_count_values(array_map('intval'array_column($list'result')))[(int)$result];
// outputs: 2
?>
2023-01-19 03:55:20
http://php5.kiev.ua/manual/ru/function.array-count-values.html
Автор:
If you have a multidimensional array with unknown dimensions, you cannot use this function, use instead:

<?php
function array_count_recursive(array $arr): array {
   
$occurrences = [] ;
   
array_walk_recursive$arr, function($value$key) use (&$occurrences) {
       @ 
$occurrences[$value]++; 
       
// @ to surpress warnings "Undefined array key". In php8 you can also use
       // $occurrences[$value] = ($occurrences[$value] ?? 0) + 1 
   
});
    return 
$occurrences;
}   
?>
2023-09-26 13:50:16
http://php5.kiev.ua/manual/ru/function.array-count-values.html

    Поддержать сайт на родительском проекте КГБ