Comment puis-je compter le nombre d'éléments dans un tableau avec une valeur égale à une constante? Exemple,
$myArray = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
comment puis-je savoir directement combien de "Ben" est à l'intérieur?
$array = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
$counts = array_count_values($array);
echo $counts['Ben'];
Vous pouvez le faire avec array_keys et count .
$array = array("blue", "red", "green", "blue", "blue");
echo count(array_keys($array, "blue"));
Sortie:
3
Utilisez la fonction array_count_values .
$ countValues = array_count_values ($ myArray);
echo $countValues["Ben"];
Utilisez la fonction array_count_values()
. Vérifiez ce lien http://php.net/manual/en/function.array-count-values.php
essayez la fonction array_count_values ()
<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>
sortie:
Array
(
[1] => 2
[hello] => 2
[world] => 1
)
Dans mon cas de tableau à deux dimensions, de PHP Commentaires de page officiels, j'ai trouvé l'extrait de code utile pour un tableau à deux dimensions -
<?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
?>
Si vous voulez compter TOUTES les mêmes occurrences dans le tableau, voici une fonction pour les compter toutes et renvoyer les résultats sous forme de tableau multidimensionnel:
function countSame($array) {
$count = count($array);
$storeArray = array();
while ($count > 0) {
$count--;
if ($array[$count]) {
$a = $array[$count];
$counts = array_count_values($array);
$counts = $counts[$a];
$tempArray = array($a, $counts);
array_Push($storeArray, $tempArray);
$keys = array_keys($array, $a);
foreach ($keys as $k) {
unset($array[$k]);
} //end of foreach ($keys as $k)
} //end of if ($array[$count])
} //end of while ($count > 0)
return $storeArray;
} //end of function countSame($array)
define( 'SEARCH_STRING', 'Ben' );
$myArray = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
$count = count(array_filter($myArray,function($value){return SEARCH_STRING === $value;}));
echo $count, "\n";
Sortie:
3
array_count_values
ne fonctionne que pour les entiers et les chaînes. S'il vous arrive de vouloir compter pour des valeurs flottantes/numériques (et que vous soyez attentif aux petites variations de précision ou de représentation), ceci fonctionne:
function arrayCountValues($arr) {
$vals = [];
foreach ($arr as $val) { array_Push($vals,strval($val)); }
$cnts = array_count_values($vals);
arsort($cnts);
return $cnts;
}
Notez que je retourne $cnts
avec les clés sous forme de chaînes. Il serait facile de les reconvertir, mais j'essaie de déterminer le mode pour les valeurs, je n'ai donc besoin que de reconvertir les premières (plusieurs) valeurs.
J'ai testé une version qui a bouclé, créant un tableau de comptes plutôt que d'utiliser array_count_values
, et cela s'est avéré plus efficace (peut-être de 8 à 10%)!
Essayez la fonction PHP array_count_values
.