web-dev-qa-db-fra.com

Comptage de l'occurrence d'une valeur spécifique dans un tableau avec PHP

J'essaie de trouver une fonction native PHP qui me permettra de compter le nombre d'occurrences d'une valeur particulière dans un tableau. Je connais bien la fonction array_count_values ​​(), mais elle renvoie le nombre de toutes les valeurs d’un tableau. Existe-t-il une fonction qui vous permet de transmettre la valeur et de simplement renvoyer le nombre d'instances pour cette valeur particulière? Par exemple:

$array = array(1, 2, 3, 3, 3, 4, 4, 5, 6, 6, 6, 6, 7);

$instances = some_native_function(6, $array);  //$instances will be equal to 4

Je sais créer ma propre fonction, mais pourquoi réinventer la roue? 

22
Javit
function array_count_values_of($value, $array) {
    $counts = array_count_values($array);
    return $counts[$value];
}

Pas natif , mais bon, c'est assez simple. ;-)

Alternativement:

echo count(array_filter($array, function ($n) { return $n == 6; }));

Ou:

echo array_reduce($array, function ($v, $n) { return $v + ($n == 6); }, 0);

Ou:

echo count(array_keys($array, 6));
39
deceze

Cette solution peut être proche de votre besoin

$array = array(1, 2, 3, 3, 3, 4, 4, 5, 6, 6, 6, 6, 7);
print_r(array_count_values($array));

Result:

Array
( [1] => 1 ,[2] => 1 , [3] => 3, [4] => 2,[5] =>1, [6] => 4, [7] => 1 )

pour détails

12
Muhammad Zeeshan

À partir de PHP 5.4.0, vous pouvez utiliser le déréférencement de tableaux de fonctions pour l'index [6] du tableau résultant de array_count_values():

$instances = array_count_values($array)[6]; //$instances will be equal to 4
10
AbraCadaver

Supposons que nous ayons le tableau suivant:

     $stockonhand = array( "large green", "small blue", "xlarge brown", "large green", "medieum yellow", "xlarge brown",  "large green");

1) Copiez et collez cette fonction une fois en haut de votre page.

    function arraycount($array, $value){
    $counter = 0;
    foreach($array as $thisvalue) /*go through every value in the array*/
     {
           if($thisvalue === $value){ /*if this one value of the array is equal to the value we are checking*/
           $counter++; /*increase the count by 1*/
           }
     }
     return $counter;
     }

2) Tout ce que vous devez faire ensuite est d’appliquer la fonction chaque fois que vous souhaitez compter une valeur particulière dans un tableau. Par exemple:

     echo arraycount($stockonhand, "large green"); /*will return 3*/

     echo arraycount($stockonhand, "xlarge brown"); /*will return 2*/
3
Kareem

Dites que j'ai un tableau comme celui-ci:

$array = array('', '', 'other', '', 'other');

$counter = 0;
foreach($array as $value)
{
  if($value === '')
    $counter++;
}
echo $counter;

Cela donne le nombre de fois '' se répète dans le tableau 

0
sachin tendulkar