sizeof()
Aprenda como a função sizeof() do PHP conta elementos de arrays, sua relação com count() e como COUNT_RECURSIVE lida com arrays aninhados, com exemplos.
Introdução
O PHP inclui muitas funções integradas para trabalhar com arrays. sizeof() é uma das mais simples: ela retorna o número de elementos que um array contém. Esta página explica como sizeof() funciona, como se comporta com arrays aninhados (multidimensionais) e por que ela é apenas outro nome para count().
O que é sizeof()?
sizeof() retorna o número de itens em um array. É um alias de count() — as duas funções são idênticas internamente, portanto compartilham o mesmo comportamento, valores de retorno e desempenho. Tudo o que você pode fazer com count() pode ser feito com sizeof(), e vice-versa.
Por ser um alias e não uma implementação separada, não há situação em que uma seja mais rápida ou mais capaz que a outra.
Sintaxe
sizeof(array|Countable $value, int $mode = COUNT_NORMAL): int| Parâmetro | Obrigatório | Descrição |
|---|---|---|
$value | Sim | O array (ou objeto Countable) cujos elementos você deseja contar. |
$mode | Não | Como contar. COUNT_NORMAL (padrão) conta apenas os elementos do nível superior; COUNT_RECURSIVE também conta os elementos dentro de arrays aninhados. |
Retorna um int — o número de elementos.
Exemplo básico
Contando os elementos de um array simples:
Saída:
3O array contém três elementos, portanto sizeof() retorna 3.
Contando arrays aninhados com COUNT_RECURSIVE
Por padrão, sizeof() conta apenas os elementos do nível superior. Para também contar os elementos dentro de sub-arrays, passe 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 itemsSaída:
2
5COUNT_NORMAL vê duas chaves de nível superior (fruits e vegetables). COUNT_RECURSIVE conta essas duas chaves mais os três valores dentro delas (apple, banana, carrot), resultando em 5.
sizeof() vs count()
Use o nome que for mais legível para você — o resultado é sempre o mesmo:
<?php
$nums = [10, 20, 30, 40];
var_dump(sizeof($nums) === count($nums));Saída:
bool(true)Na prática, a documentação oficial do PHP recomenda count(), pois o nome sizeof pode ser confundido com o operador sizeof do C (que mede o tamanho em memória, não a quantidade de elementos). Usar count() mantém seu código consistente com a maioria das bases de código PHP modernas.
Armadilhas comuns
- Não conta caracteres em uma string.
sizeof('hello')gera um aviso e retorna1, não5. Usestrlen()para o comprimento de strings. - Não soma os tamanhos de múltiplos arrays.
sizeof()recebe um argumento de array, não vários. - Um array vazio retorna
0. Isso torna seguro usá-la diretamente em uma condição de loop, comofor ($i = 0; $i < sizeof($arr); $i++).
Conclusão
sizeof() retorna o número de elementos em um array e é um alias direto de count(). Passe COUNT_RECURSIVE quando precisar contar também os elementos aninhados. Para código novo, prefira count() para maior clareza — mas ambas se comportam de forma idêntica.