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

  1. $cores contém um array indexado com três elementos de string.
  2. count($cores) retorna 3, que é o total de elementos de nível superior. Isso funciona da mesma forma em arrays associativos: count() conta chaves, não valores.
  3. Um array vazio retorna 0, então count() 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.