count()
En PHP, la fonction count() est une fonction intégrée qui retourne le nombre d'éléments d'un array ou de propriétés d'un object.
La fonction count() est une fonction PHP intégrée qui retourne le nombre d'éléments dans un array. Elle peut également compter un object si celui-ci implémente l'interface Countable. C'est l'une des fonctions de manipulation de tableaux les plus utilisées en PHP, notamment pour connaître le nombre d'éléments d'une liste avant de l'itérer, de la paginer ou de la valider.
Ce chapitre couvre la syntaxe, le mode de comptage récursif optionnel, le comportement de count() sur les objects et les valeurs limites, ainsi que les erreurs les plus courantes à éviter.
Syntaxe de la fonction count()
La syntaxe de la fonction count() est simple. Elle prend un argument, qui est l'array ou l'object à compter. La fonction retourne un entier représentant le nombre d'éléments ou de propriétés.
<?php
count(mixed $array_or_object, int $mode = COUNT_NORMAL): intNote : La signature typée ci-dessus reflète PHP 8.0+. En PHP 8.0+, passer un type non-dénombrable (tel qu'un string ou un entier) lève une
ValueError. Les versions antérieures de PHP n'ont pas de types stricts mais fonctionnent de manière identique. Note :sizeof()est un alias hérité decount()et se comporte de façon identique.
Le deuxième argument, $mode, est optionnel et permet de spécifier le comportement de la fonction count(). Il accepte deux valeurs possibles :
COUNT_NORMAL: C'est le mode par défaut, qui se comporte de la même façon quecount()sans le paramètre$mode. Il compte simplement le nombre d'éléments dans l'array ou de propriétés dans l'object.COUNT_RECURSIVE: Ce mode compte récursivement les éléments dans les arrays et objects imbriqués.
<?php
$data = array('apple', array('banana', 'cherry'));
echo count($data); // Output: 2
echo count($data, COUNT_RECURSIVE); // Output: 4Avec COUNT_NORMAL (le mode par défaut), count($data) retourne 2 : l'array externe contient deux éléments — le string 'apple' et l'array interne. Avec COUNT_RECURSIVE, PHP compte également les éléments à l'intérieur de chaque array imbriqué, ce qui retourne 4 : 'apple', l'array interne lui-même, 'banana' et 'cherry'. Utilisez le mode récursif uniquement lorsque vous avez réellement besoin du nombre total sur tous les niveaux d'imbrication — il parcourt toute la structure et est plus lent sur les arrays volumineux et profondément imbriqués.
Exemples d'utilisation de la fonction count()
Voici quelques exemples pratiques illustrant comment la fonction count() peut être utilisée pour compter les éléments d'un array et les propriétés d'un object.
Exemple 1 : Compter les éléments d'un array
Compter les éléments d'un array en PHP
Dans cet exemple, nous avons un array appelé $fruits contenant trois éléments. La fonction count() retourne 3, représentant le nombre total d'éléments dans l'array.
Exemple 2 : Compter les propriétés d'un object
Compter les propriétés d'un object en PHP
<?php
class Person implements Countable
{
public $name;
public $age;
public function count()
{
return count(get_object_vars($this));
}
}
$person = new Person();
$person->name = 'John';
$person->age = 30;
echo count($person); // Output: 2Dans cet exemple, nous avons une classe simple appelée Person avec deux propriétés publiques, $name et $age. Nous créons une nouvelle instance de la classe Person et assignons des valeurs à ses propriétés. Comme la classe implémente l'interface Countable, l'appel à count($person) invoque la méthode personnalisée count(), qui retourne 2. Cela démontre comment le comportement de count() peut être personnalisé pour les objects.
Note : Sans l'interface
Countable, passer un object ordinaire àcount()lève uneTypeErroren PHP 8.0+.count()ne compte pas automatiquement les propriétés d'un object — si vous souhaitez le faire, utilisez directementcount(get_object_vars($obj)).
Erreurs courantes et cas limites
Quelques comportements de count() surprennent régulièrement les développeurs :
- Compter
nullou des scalaires lève une exception en PHP 8. En PHP 7.2–7.4,count(null)émettait un avertissement et retournait0, et compter un scalaire non-dénombrable retournait1. Depuis PHP 8.0, passer une valeur non-dénombrable (null, un string, un entier) lève uneTypeError. Vérifiez la valeur au préalable si elle peut ne pas être un array. count()n'est pas une fonction de longueur de string. Pour compter les caractères d'un string, utilisezstrlen()et noncount().- Seul le premier niveau est compté par défaut. Comme indiqué ci-dessus, les arrays imbriqués comptent comme un seul élément, sauf si vous passez
COUNT_RECURSIVE.
<?php
$value = null;
// Safe even when $value is not an array:
$total = is_array($value) ? count($value) : 0;
echo $total; // Output: 0Utilisez is_array() pour vous assurer qu'une valeur est dénombrable avant d'appeler count() sur des données dont vous ne contrôlez pas le type (par exemple, du JSON décodé ou une ligne de base de données).
Fonctions connexes
array_count_values()— compter combien de fois chaque valeur distincte apparaît dans un array.in_array()— vérifier si une valeur existe dans un array.array_push()— ajouter des éléments à un array (dont vous pouvez ensuite mesurer la taille aveccount()).- Les arrays multidimensionnels — là où
COUNT_RECURSIVEest le plus utile. - La boucle foreach — itérer sur les éléments que vous venez de compter.
Conclusion
La fonction count() est un outil simple mais essentiel pour travailler avec les arrays en PHP. Utilisez-la pour connaître la taille d'une liste avant de l'itérer ou de la paginer, recourez à COUNT_RECURSIVE lorsque vous avez besoin d'un décompte complet sur des arrays imbriqués, et n'oubliez pas qu'en PHP 8.0+ vous devez passer un vrai array (ou un object Countable) — protégez les valeurs incertaines avec is_array() au préalable. En gardant ces règles à l'esprit, count() est un moyen fiable et lisible de mesurer les structures de données dont dépend votre code.