sizeof()
Apprenez comment sizeof() compte les éléments d'un tableau en PHP, son lien avec count() et COUNT_RECURSIVE pour les tableaux imbriqués, avec exemples.
Introduction
PHP propose de nombreuses fonctions intégrées pour travailler avec les tableaux. sizeof() est l'une des plus simples : elle retourne le nombre d'éléments que contient un tableau. Cette page explique comment sizeof() fonctionne, comment elle se comporte avec les tableaux imbriqués (multidimensionnels), et pourquoi elle n'est en réalité qu'un autre nom pour count().
Qu'est-ce que sizeof() ?
sizeof() retourne le nombre d'éléments dans un tableau. C'est un alias de count() — les deux fonctions sont identiques en interne, elles partagent donc le même comportement, les mêmes valeurs de retour et les mêmes performances. Tout ce que vous pouvez faire avec count(), vous pouvez le faire avec sizeof(), et inversement.
Comme il s'agit d'un alias et non d'une implémentation distincte, il n'existe aucune situation où l'une serait plus rapide ou plus capable que l'autre.
Syntaxe
sizeof(array|Countable $value, int $mode = COUNT_NORMAL): int| Paramètre | Requis | Description |
|---|---|---|
$value | Oui | Le tableau (ou objet Countable) dont vous souhaitez compter les éléments. |
$mode | Non | La méthode de comptage. COUNT_NORMAL (par défaut) ne compte que les éléments de premier niveau ; COUNT_RECURSIVE compte également les éléments des tableaux imbriqués. |
Elle retourne un int — le nombre d'éléments.
Exemple de base
Compter les éléments d'un tableau simple :
Résultat :
3Le tableau contient trois éléments, donc sizeof() retourne 3.
Compter les tableaux imbriqués avec COUNT_RECURSIVE
Par défaut, sizeof() ne compte que les éléments au premier niveau. Pour compter également les éléments à l'intérieur des sous-tableaux, passez COUNT_RECURSIVE comme second argument :
<?php
$data = [
'fruits' => ['apple', 'banana'],
'vegetables' => ['carrot'],
];
echo sizeof($data); // top-level keys only
echo "\n";
echo sizeof($data, COUNT_RECURSIVE); // top-level + nested itemsRésultat :
2
5COUNT_NORMAL voit deux clés de premier niveau (fruits et vegetables). COUNT_RECURSIVE compte ces deux clés plus les trois valeurs qu'elles contiennent (apple, banana, carrot), ce qui donne 5.
sizeof() vs count()
Utilisez le nom qui vous semble le plus lisible — le résultat est toujours identique :
<?php
$nums = [10, 20, 30, 40];
var_dump(sizeof($nums) === count($nums));Résultat :
bool(true)En pratique, la documentation officielle PHP recommande count(), car le nom sizeof prête à confusion avec l'opérateur sizeof du langage C (qui mesure la taille en mémoire, et non le nombre d'éléments). Utiliser count() permet de garder votre code cohérent avec la plupart des bases de code PHP modernes.
Pièges courants
- Elle ne compte pas les caractères d'une chaîne.
sizeof('hello')déclenche un avertissement et retourne1, et non5. Utilisezstrlen()pour la longueur d'une chaîne. - Elle ne somme pas les tailles de plusieurs tableaux.
sizeof()accepte un seul tableau en argument, pas plusieurs. - Un tableau vide retourne
0. Cela permet de l'utiliser directement dans une condition de boucle, commefor ($i = 0; $i < sizeof($arr); $i++).
Conclusion
sizeof() retourne le nombre d'éléments dans un tableau et est un alias direct de count(). Passez COUNT_RECURSIVE lorsque vous avez besoin de compter également les éléments imbriqués. Pour le nouveau code, préférez count() pour plus de clarté — mais les deux se comportent de manière identique.