W3docs

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): int

Note : 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é de count() 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 que count() 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: 4

Avec 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

php— editable, runs on the server

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: 2

Dans 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 une TypeError en PHP 8.0+. count() ne compte pas automatiquement les propriétés d'un object — si vous souhaitez le faire, utilisez directement count(get_object_vars($obj)).

Erreurs courantes et cas limites

Quelques comportements de count() surprennent régulièrement les développeurs :

  • Compter null ou des scalaires lève une exception en PHP 8. En PHP 7.2–7.4, count(null) émettait un avertissement et retournait 0, et compter un scalaire non-dénombrable retournait 1. Depuis PHP 8.0, passer une valeur non-dénombrable (null, un string, un entier) lève une TypeError. 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, utilisez strlen() et non count().
  • 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: 0

Utilisez 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

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.

Pratique

Pratique
Quelle est la fonctionnalité de la fonction 'count()' en PHP ?
Quelle est la fonctionnalité de la fonction 'count()' en PHP ?
Was this page helpful?