Longitud de arrays en PHP con count() y sizeof()
La longitud de un array en PHP es la cantidad de elementos del array, y count() es la forma estándar de obtenerla. Para contar elementos en un array de PHP, llama a count($array) (o sizeof($array), que es la misma función). count() devuelve el número de elementos de nivel superior tanto en arrays indexados como asociativos. En estructuras anidadas, COUNT_RECURSIVE también cuenta subarrays, así que úsalo solo cuando ese comportamiento coincida con lo que necesitas.
Ejemplo de longitud de array en PHP para contar elementos
Salida:
La salida aparecerá aquí...
Salida:
3
Cómo funciona este ejemplo
$colorescontiene un array indexado con tres elementos string.count($colores)devuelve3: el número total de elementos de nivel superior. Esto funciona igual para arrays asociativos:count()cuenta claves, no valores.- Un array vacío devuelve
0, así quecount()también sirve como comprobación de vacío al compararlo con cero.
Cómo obtener la longitud de un array en PHP
PHP no tiene una propiedad .length en los arrays. La función count() es la forma estándar de obtener la longitud de un array en PHP, y también funciona con objetos que implementan Countable. Siempre devuelve un int. En PHP 8.0+, llamar a count() sobre un valor no contable lanza un TypeError, así que protégelo con is_countable() cuando el valor pueda no ser un array.
Errores comunes con count() en PHP
Usar strlen() en lugar de count()
Incorrecto:
$elementos = ["a", "b", "c"];
echo strlen($elementos); // TypeError en PHP 8+
Correcto:
echo count($elementos); // 3
strlen() mide la longitud en bytes de una cadena, no el número de elementos de un array.
Llamar a count() sobre valores no contables
Incorrecto:
$posibleArray = "abc";
echo count($posibleArray); // TypeError en PHP 8+
Correcto:
$longitud = is_countable($posibleArray) ? count($posibleArray) : 0;
echo $longitud;
Si un valor puede ser un escalar o null, comprueba is_countable() antes de contar.
count() vs sizeof() en PHP
count() | sizeof() |
|---|---|
| Función canónica documentada en el manual de PHP. | Alias de count(): comportamiento y rendimiento idénticos. |
| Reconocida de forma universal en bases de código PHP. | Puede confundir a desarrolladores de C/C++ donde sizeof devuelve tamaño en bytes. |
Prefiere count() en todo código nuevo. sizeof() existe por compatibilidad, pero no aporta valor y puede confundir a quienes vienen de otros lenguajes.
COUNT_NORMAL vs COUNT_RECURSIVE
$grupos = ["frutas" => ["manzana", "pera"], "colores" => ["rojo"]];
echo count($grupos); // 2 (claves de nivel superior)
echo count($grupos, COUNT_RECURSIVE); // 5 (2 claves + 3 valores)
COUNT_NORMAL (el valor predeterminado, 0) cuenta solo elementos de nivel superior. COUNT_RECURSIVE (valor 1) recorre todos los arrays anidados y suma sus elementos al total. Los arrays con referencias circulares disparan una advertencia durante el conteo recursivo.
Usa COUNT_RECURSIVE solo cuando contar subarrays como elementos tenga sentido para tu caso de uso: no devuelve un conteo de valores hoja.
FAQ
¿Cómo obtienes la longitud de un array en PHP?
Llama a count($array) para obtener la cantidad de elementos. Funciona con arrays indexados, arrays asociativos y objetos que implementan Countable. Un array vacío devuelve 0.
¿count() funciona con arrays asociativos?
Sí. count() cuenta claves, sin importar si son numéricas o de texto. count(["a" => 1, "b" => 2]) devuelve 2.
¿Qué pasa cuando pasas un valor no array a count() en PHP 8?
PHP 8.0+ lanza un TypeError para valores no contables como strings, enteros, null u objetos simples. En PHP 7.2+, emitía una advertencia y devolvía 1 para escalares (y 0 para null), lo que podía ocultar errores.