is_array()
La funzione is_array() è una funzione integrata in PHP che verifica se una variabile è un array o meno. Restituisce true se è un array, false altrimenti.
Cos'è is_array()?
is_array() è una funzione integrata di PHP che verifica se una determinata variabile è un array. Restituisce true se la variabile è un array e false per qualsiasi altro tipo (string, integer, object, null, ecc.).
PHP è tipizzato dinamicamente, quindi una variabile può contenere qualsiasi tipo di valore a runtime. Prima di iterare su un valore, accedervi per indice o passarlo a una funzione per array come count() o array_map(), vale spesso la pena verificare di avere effettivamente un array. Chiamare una funzione per array su un valore che non è un array può generare un TypeError (PHP 8+) o emettere un avviso, quindi un rapido controllo con is_array() rende il codice più sicuro.
Sintassi
is_array(mixed $value): boolAccetta un singolo parametro, $value — la variabile da testare — e restituisce sempre un boolean. Non genera mai un errore proprio, quindi è sicuro chiamarla su qualsiasi valore, compresi i risultati apparentemente non impostati di funzioni.
Esempio di base
Qui $list è un array, quindi is_array() restituisce true; $text è una string, quindi restituisce false. Usiamo var_dump() invece di echo perché echo true stampa 1 mentre echo false stampa una stringa vuota — il che rende i boolean difficili da leggere. var_dump() mostra il tipo e il valore in modo esplicito.
Cosa conta come array
Sia gli array indicizzati che quelli associativi restituiscono true, e lo stesso vale per un array vuoto. Qualsiasi cosa che sembri una collezione — come un object o un ArrayObject — non conta come array nativo.
<?php
var_dump(is_array([])); // bool(true) — empty array
var_dump(is_array([1, 2, 3])); // bool(true) — indexed
var_dump(is_array(["name" => "Ann"])); // bool(true) — associative
var_dump(is_array([[1, 2], [3, 4]])); // bool(true) — multidimensional
var_dump(is_array("array")); // bool(false) — string
var_dump(is_array(42)); // bool(false) — integer
var_dump(is_array(null)); // bool(false) — null
var_dump(is_array(new stdClass())); // bool(false) — object
?>Uso pratico: protezione prima dell'iterazione
Un pattern comune è normalizzare l'input che può arrivare come valore singolo o come lista, per poi iterare in sicurezza:
<?php
function printAll(mixed $input): void
{
// Wrap a single value in an array so the loop always works.
if (!is_array($input)) {
$input = [$input];
}
foreach ($input as $item) {
echo $item, "\n";
}
}
printAll("just one"); // just one
printAll(["a", "b", "c"]); // a / b / c on separate lines
?>Questo evita un avviso di foreach quando $input è uno scalare e mantiene il codice chiamante semplice.
is_array() vs. controlli correlati
is_array()vs.gettype():gettype()restituisce una string come"array";is_array()restituisce direttamente un boolean, che si legge meglio in unif.is_array()vs.is_iterable(): se hai solo bisogno di sapere se puoi eseguire unforeachsu un valore,is_iterable()è più ampio — accetta sia array che objectTraversable(come i generatori).is_array()vs.is_countable(): usais_countable()prima di chiamarecount()in modo da accettare anche gli object che implementano l'interfacciaCountable.- Per altri controlli scalari vedi
is_string()eis_int().
Riepilogo
Usa is_array() ogni volta che hai bisogno di un controllo rapido e privo di errori per verificare che un valore sia un vero array PHP — il più delle volte come protezione prima di un ciclo o prima di chiamare una funzione specifica per array. Se devi consentire anche object iterabili, usa invece is_iterable() o is_countable().