sizeof()
Scopri come la funzione PHP sizeof() conta gli elementi di un array, come si relaziona a count() e come COUNT_RECURSIVE gestisce gli array annidati.
Introduzione
PHP include molte funzioni integrate per lavorare con gli array. sizeof() è una delle più semplici: restituisce il numero di elementi contenuti in un array. Questa pagina spiega come funziona sizeof(), come si comporta con array annidati (multidimensionali) e perché non è altro che un alias di count().
Cos'è sizeof()?
sizeof() restituisce il numero di elementi in un array. È un alias di count() — le due funzioni sono identiche internamente, quindi condividono lo stesso comportamento, gli stessi valori restituiti e le stesse prestazioni. Tutto ciò che puoi fare con count() puoi farlo con sizeof(), e viceversa.
Poiché è un alias e non un'implementazione separata, non esiste alcuna situazione in cui una sia più veloce o più capace dell'altra.
Sintassi
sizeof(array|Countable $value, int $mode = COUNT_NORMAL): int| Parametro | Obbligatorio | Descrizione |
|---|---|---|
$value | Sì | L'array (o oggetto Countable) di cui si vogliono contare gli elementi. |
$mode | No | Come contare. COUNT_NORMAL (predefinito) conta solo gli elementi di primo livello; COUNT_RECURSIVE conta anche gli elementi negli array annidati. |
Restituisce un int — il numero di elementi.
Esempio di base
Contare gli elementi di un array semplice:
Output:
3L'array contiene tre elementi, quindi sizeof() restituisce 3.
Contare array annidati con COUNT_RECURSIVE
Per impostazione predefinita sizeof() conta solo gli elementi al primo livello. Per contare anche gli elementi negli array annidati, passa COUNT_RECURSIVE come secondo argomento:
<?php
$data = [
'fruits' => ['apple', 'banana'],
'vegetables' => ['carrot'],
];
echo sizeof($data); // top-level keys only
echo "\n";
echo sizeof($data, COUNT_RECURSIVE); // top-level + nested itemsOutput:
2
5COUNT_NORMAL vede due chiavi di primo livello (fruits e vegetables). COUNT_RECURSIVE conta queste due chiavi più i tre valori al loro interno (apple, banana, carrot), ottenendo 5.
sizeof() vs count()
Usa il nome che ti sembra più leggibile — il risultato è sempre lo stesso:
<?php
$nums = [10, 20, 30, 40];
var_dump(sizeof($nums) === count($nums));Output:
bool(true)In pratica la documentazione ufficiale di PHP raccomanda count(), poiché il nome sizeof può essere confuso con l'operatore sizeof del C (che misura la dimensione in memoria, non il numero di elementi). Usare count() mantiene il codice coerente con la maggior parte delle moderne basi di codice PHP.
Errori comuni
- Non conta i caratteri in una stringa.
sizeof('hello')genera un avviso e restituisce1, non5. Usastrlen()per la lunghezza di una stringa. - Non somma le dimensioni di più array.
sizeof()accetta un solo argomento array, non più di uno. - Un array vuoto restituisce
0. Questo lo rende sicuro da usare direttamente in una condizione di ciclo comefor ($i = 0; $i < sizeof($arr); $i++).
Conclusione
sizeof() restituisce il numero di elementi in un array ed è un alias diretto di count(). Passa COUNT_RECURSIVE quando hai bisogno di contare anche gli elementi annidati. Per il nuovo codice, preferisci count() per chiarezza — ma entrambi si comportano in modo identico.