W3docs

Comprendre la fonction PHP "array_count_values"

La fonction array_count_values en PHP compte les occurrences de chaque valeur d'un array et retourne un array associatif.

La fonction PHP array_count_values() compte combien de fois chaque valeur apparaît dans un array. Elle retourne un nouvel array associatif dont les clés sont les valeurs distinctes du tableau d'entrée et les valeurs indiquent le nombre d'occurrences de chacune. C'est le moyen le plus rapide de construire une table de fréquences (un histogramme de valeurs) sans écrire de boucle vous-même.

Ce chapitre couvre la syntaxe, les règles concernant les valeurs qui peuvent être comptées, les pièges courants, et des recettes pratiques telles que trouver l'élément le plus fréquent.

Syntaxe

array_count_values(array $array): array
ParamètreDescription
$arrayLe tableau d'entrée dont vous souhaitez compter les valeurs. Seules les valeurs de type int et string sont comptées.

La fonction retourne un array associatif de paires valeur => nombre. Elle ne modifie pas le tableau d'origine.

Exemple de base

Passez un array de valeurs, et vous obtenez en retour chaque valeur distincte associée à son nombre d'occurrences :

php— editable, runs on the server

Résultat :

Array
(
    [red] => 2
    [green] => 1
    [blue] => 2
    [yellow] => 1
)

"red" et "blue" apparaissent chacun deux fois, tandis que "green" et "yellow" n'apparaissent qu'une fois. Les clés du tableau d'origine sont entièrement ignorées — seules les valeurs comptent.

Interaction entre clés entières et string

Étant donné que les clés d'un array PHP ne peuvent être que des entiers ou des string, array_count_values() ne compte que les valeurs de type int et string. Il y a une conséquence subtile : une string numérique comme "1" et l'entier 1 sont traités comme la même clé, donc ils sont comptés ensemble.

<?php

$mixed = array(1, "1", 1, "hello", "hello");
print_r(array_count_values($mixed));

?>

Résultat :

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

L'entier 1 et la string "1" fusionnent en une seule clé 1 avec un total de 3. Cela reflète la façon dont PHP normalise les clés d'array partout.

Valeurs qui ne peuvent pas être comptées

Toute valeur qui n'est pas un int ou une stringnull, les booléens, les flottants, les arrays ou les objects — ne peut pas être utilisée comme clé. PHP l'ignore et émet un avertissement plutôt que de la compter :

<?php

$values = array("a", "b", null, 3.5, "a");
print_r(@array_count_values($values));

?>

Résultat :

Array
(
    [a] => 2
    [b] => 1
)

Seules les valeurs string sont comptées ; null et le flottant 3.5 sont ignorés (l'appel réel génère des avertissements "Can only count string and integer values" — le @ ci-dessus sert uniquement à garder la sortie propre pour la démonstration). Castez ou filtrez vos données au préalable si vous devez compter d'autres types.

Recette pratique : trouver la valeur la plus fréquente

Une table de fréquences permet de trouver facilement le mode (l'élément le plus courant). Triez les comptes en ordre décroissant et lisez la première clé :

<?php

$votes = array("yes", "no", "yes", "yes", "no", "maybe");
$counts = array_count_values($votes);
arsort($counts);            // sort by count, highest first, keeping keys
$winner = array_key_first($counts);

echo "Winner: $winner ({$counts[$winner]} votes)";

?>

Résultat :

Winner: yes (3 votes)

Vous pouvez également passer le résultat directement à array_sum() pour vérifier le total, ou à max() pour obtenir le nombre le plus élevé.

Compter les mots dans une string

Un cas d'utilisation courant est la construction d'une carte de fréquences de mots. Divisez la string en mots avec explode(), puis comptez :

<?php

$text = "the cat sat on the mat the cat ran";
$words = explode(" ", $text);
print_r(array_count_values($words));

?>

Résultat :

Array
(
    [the] => 3
    [cat] => 2
    [sat] => 1
    [on] => 1
    [mat] => 1
    [ran] => 1
)

Quand l'utiliser

Utilisez array_count_values() chaque fois que vous avez besoin d'un histogramme de valeurs : comptage de votes, recherche de doublons, construction de nuages de tags, ou détection des entrées les plus/moins fréquentes. C'est plus rapide et plus lisible qu'une boucle foreach manuelle avec des vérifications isset(), et cela élimine une source fréquente de bugs de décalage.

Fonctions associées

  • array_unique() — supprimer les valeurs en double (quand vous vous intéressez uniquement à quelles valeurs existent, pas combien de fois).
  • array_keys() — extraire uniquement les valeurs distinctes une fois qu'elles sont des clés.
  • array_sum() — additionner les comptes.
  • arsort() — trier la table de fréquences résultante par nombre.

Pratique

Pratique
Quel est le rôle de la fonction array_count_values() en PHP ?
Quel est le rôle de la fonction array_count_values() en PHP ?
Was this page helpful?