Tamanho de array em PHP: count() e sizeof()
O tamanho de um array em PHP é a quantidade de elementos, e count() é a forma padrão de obter esse valor. Para contar elementos de um array em PHP, chame count($array) (ou sizeof($array), que é a mesma função). count() retorna o número de elementos de nível superior em arrays indexados e associativos. Em estruturas aninhadas, COUNT_RECURSIVE também conta subarrays, então use apenas quando esse comportamento for o esperado.
Exemplo de tamanho de array em PHP para contar elementos
Saída:
A saída aparecerá aqui...
Saída:
3
Como este exemplo funciona
$corescontém um array indexado com três elementos de string.count($cores)retorna3, que é o total de elementos de nível superior. Isso funciona da mesma forma em arrays associativos:count()conta chaves, não valores.- Um array vazio retorna
0, entãocount()também serve para verificar vazio quando comparado com zero.
Como obter o tamanho de array em PHP
PHP não tem a propriedade .length em arrays. A função padrão para obter o tamanho de um array em PHP é count(), e ela também funciona em objetos que implementam Countable. O retorno é sempre um int. No PHP 8.0+, chamar count() em um valor não contável lança TypeError, então proteja com is_countable() quando o valor talvez não seja um array.
Erros comuns com count() no PHP
Usar strlen() em vez de count()
Errado:
$itens = ["a", "b", "c"];
echo strlen($itens); // TypeError no PHP 8+
Certo:
echo count($itens); // 3
strlen() mede o comprimento em bytes de uma string, não a quantidade de elementos de um array.
Chamar count() em valores não contáveis
Errado:
$talvezArray = "abc";
echo count($talvezArray); // TypeError no PHP 8+
Certo:
$comprimento = is_countable($talvezArray) ? count($talvezArray) : 0;
echo $comprimento;
Se um valor pode ser escalar ou null, verifique com is_countable() antes de contar.
count() vs sizeof() no PHP
count() | sizeof() |
|---|---|
| Função canônica documentada no manual do PHP. | Alias de count(), com comportamento e performance idênticos. |
| Reconhecida em praticamente todo código PHP. | Pode confundir desenvolvedores de C/C++, em que sizeof retorna tamanho em bytes. |
Prefira count() em código novo. sizeof() existe por compatibilidade, mas não adiciona valor e pode confundir quem vem de outras linguagens.
COUNT_NORMAL vs COUNT_RECURSIVE
$grupos = ["frutas" => ["maçã", "pera"], "cores" => ["vermelho"]];
echo count($grupos); // 2 (chaves de primeiro nível)
echo count($grupos, COUNT_RECURSIVE); // 5 (2 chaves + 3 valores)
COUNT_NORMAL (o padrão, valor 0) conta apenas elementos de nível superior. COUNT_RECURSIVE (valor 1) percorre todos os arrays aninhados e soma seus elementos ao total. Arrays com referências circulares geram aviso durante a contagem recursiva.
Use COUNT_RECURSIVE apenas quando contar subarrays como elementos fizer sentido no seu caso de uso, pois ele não retorna a contagem apenas dos valores folha.
FAQ
Como obter o tamanho de um array em PHP?
Use count($array) para obter a quantidade de elementos. Isso funciona com arrays indexados, arrays associativos e objetos que implementam Countable. Um array vazio retorna 0.
count() funciona em arrays associativos?
Sim. count() conta chaves, sejam elas numéricas ou strings. count(["a" => 1, "b" => 2]) retorna 2.
O que acontece ao passar um não-array para count() no PHP 8?
No PHP 8.0+, valores não contáveis como strings, inteiros, null ou objetos comuns causam TypeError. No PHP 7.2+, era emitido um aviso e retornado 1 para escalares (e 0 para null), o que podia esconder bugs.