Menu

PHP count(): tamanho de um array

count($arr) retorna o número de elementos de um array PHP, então count(['a', 'b', 'c']) é 3. Veja como contar arrays aninhados com COUNT_RECURSIVE, a relação entre sizeof() e count(), como contar valores que atendem a uma condição e por que count(null) lança um TypeError desde o PHP 8.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

count($arr) retorna o número de elementos de um array: count(['red', 'green', 'blue']) é 3. Arrays PHP não têm a propriedade length, então count() é como você obtém o tamanho de um array.

O count() é rápido: o PHP guarda o tamanho dentro do array, então contar um milhão de elementos custa o mesmo que contar três.

Contar um array multidimensional

Por padrão, count() conta só o nível superior. Passe COUNT_RECURSIVE (ou 1) como segundo argumento para contar todos os elementos em todas as profundidades. Os próprios arrays aninhados também são contados, e é por isso que o total costuma ser maior que o número de valores nas folhas.

Os dois atalhos supõem exatamente dois níveis. Para aninhamentos mais profundos num array multidimensional, conte as folhas com array_walk_recursive(): $n = 0; array_walk_recursive($arr, function () use (&$n) { $n++; });.

count ou sizeof

sizeof() é um alias de count(): mesmos argumentos, mesmo resultado. Use count(). É o que quase todo código e documentação PHP usa, e sizeof sugere um tamanho em bytes para quem conhece C.

Contar valores que atendem a uma condição

count() não tem argumento de condição. Filtre primeiro e depois conte: array_filter() mantém os elementos que o seu callback aceita. Para contar quantas vezes cada valor aparece, use array_count_values().

Contar caracteres numa string

count() é para arrays. Para uma string, use strlen() para bytes ou mb_strlen() para caracteres; eles diferem assim que o texto tem acentos ou japonês. A página sobre strlen explica a diferença. Para contar palavras, divida a string antes.

str_word_count() trata letras fora do ASCII como separadores, então naïve conta como duas palavras. Dividir pelos espaços é mais previsível para texto real.

count() em null ou numa string lança erro

Desde o PHP 8, count() só aceita arrays e objetos que implementam Countable. Qualquer outra coisa lança um TypeError, enquanto do PHP 7.2 ao 7.4 ele retornava 0 (para null) ou 1 (para uma string ou um número) com um aviso. A causa comum é uma variável que às vezes é null, como uma chave ausente ou uma função que não retornou nada.

Use um array vazio como padrão com ??, e a contagem fica 0:

Verificar se um array está vazio

Para perguntar "este array tem alguma coisa", compare com um array vazio ou use empty(). count($arr) === 0 também funciona, mas só quando $arr é com certeza um array.

empty($x) nunca lança erro, mesmo quando $x está indefinido ou é null, o que o torna a verificação mais segura para um valor que pode não ser um array. As outras regras dele (uma string vazia e "0" também são vazias) estão na página sobre empty.

Perguntas frequentes

Como obtenho o tamanho de um array no PHP?

Use count($arr). Ele retorna o número de elementos como inteiro, então count([10, 20, 30]) é 3. Arrays PHP não têm a propriedade length.

Qual a diferença entre count e sizeof no PHP?

Nenhuma. sizeof() é um alias de count() e recebe os mesmos argumentos. A maior parte do código usa count(), e sizeof() pode confundir quem conhece C, onde significa bytes.

Como conto os elementos de um array multidimensional?

count($arr) conta só o nível superior. count($arr, COUNT_RECURSIVE) conta todos os elementos em todas as profundidades, e os arrays aninhados também contam como elementos.

Por que count() lança um TypeError no PHP 8?

Desde o PHP 8.0, count() só aceita arrays e objetos que implementam Countable. count(null) lança TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given, e count('abc') o mesmo com string given. Use count($x ?? []) para um valor que pode ser null, e strlen() para strings.

Ilustração das linguagens de programação do Coddy

Aprenda a programar com o Coddy

COMEÇAR