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?
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));
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 .
À 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
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*/
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