sizeof()
Aprende cómo la función PHP sizeof() cuenta los elementos de un array, su relación con count() y cómo COUNT_RECURSIVE maneja arrays anidados, con ejemplos ejecutables.
Introducción
PHP incluye muchas funciones integradas para trabajar con arrays. sizeof() es una de las más simples: devuelve el número de elementos que contiene un array. Esta página explica cómo funciona sizeof(), cómo se comporta con arrays anidados (multidimensionales) y por qué en realidad es solo otro nombre para count().
¿Qué es sizeof()?
sizeof() devuelve el número de elementos de un array. Es un alias de count() — las dos funciones son idénticas internamente, por lo que comparten el mismo comportamiento, valores de retorno y rendimiento. Todo lo que puedes hacer con count() también puedes hacerlo con sizeof(), y viceversa.
Dado que es un alias y no una implementación separada, no existe ninguna situación en la que una sea más rápida o más capaz que la otra.
Sintaxis
sizeof(array|Countable $value, int $mode = COUNT_NORMAL): int| Parámetro | Requerido | Descripción |
|---|---|---|
$value | Sí | El array (u objeto Countable) cuyos elementos deseas contar. |
$mode | No | Cómo contar. COUNT_NORMAL (por defecto) cuenta solo los elementos del nivel superior; COUNT_RECURSIVE también cuenta los elementos dentro de arrays anidados. |
Devuelve un int — el número de elementos.
Ejemplo básico
Contando los elementos de un array plano:
Salida:
3El array contiene tres elementos, por lo que sizeof() devuelve 3.
Contar arrays anidados con COUNT_RECURSIVE
Por defecto, sizeof() solo cuenta los elementos del nivel superior. Para contar también los elementos dentro de sub-arrays, pasa COUNT_RECURSIVE como segundo argumento:
<?php
$data = [
'fruits' => ['apple', 'banana'],
'vegetables' => ['carrot'],
];
echo sizeof($data); // top-level keys only
echo "\n";
echo sizeof($data, COUNT_RECURSIVE); // top-level + nested itemsSalida:
2
5COUNT_NORMAL ve dos claves de nivel superior (fruits y vegetables). COUNT_RECURSIVE cuenta esas dos claves más los tres valores dentro de ellas (apple, banana, carrot), dando 5.
sizeof() vs count()
Usa el nombre que mejor te resulte — el resultado siempre es el mismo:
<?php
$nums = [10, 20, 30, 40];
var_dump(sizeof($nums) === count($nums));Salida:
bool(true)En la práctica, la documentación oficial de PHP recomienda count(), ya que el nombre sizeof puede confundirse fácilmente con el operador sizeof de C (que mide el tamaño en memoria, no la cantidad de elementos). Usar count() mantiene tu código consistente con la mayoría de los proyectos PHP modernos.
Errores comunes
- No cuenta los caracteres de una cadena.
sizeof('hello')genera una advertencia y devuelve1, no5. Usastrlen()para la longitud de una cadena. - No suma los tamaños de múltiples arrays.
sizeof()acepta un solo argumento de array, no varios. - Un array vacío devuelve
0. Esto hace que sea seguro usarlo directamente en una condición de bucle comofor ($i = 0; $i < sizeof($arr); $i++).
Conclusión
sizeof() devuelve el número de elementos de un array y es un alias directo de count(). Pasa COUNT_RECURSIVE cuando también necesites contar elementos anidados. Para código nuevo, prefiere count() por mayor claridad — pero ambas se comportan de forma idéntica.