W3docs

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): bool

Accetta 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

php— editable, runs on the server

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 ArrayObjectnon 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 un if.
  • is_array() vs. is_iterable(): se hai solo bisogno di sapere se puoi eseguire un foreach su un valore, is_iterable() è più ampio — accetta sia array che object Traversable (come i generatori).
  • is_array() vs. is_countable(): usa is_countable() prima di chiamare count() in modo da accettare anche gli object che implementano l'interfaccia Countable.
  • Per altri controlli scalari vedi is_string() e is_int().

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().

Pratica

Pratica
Cosa fa la funzione 'is_array' in PHP?
Cosa fa la funzione 'is_array' in PHP?
Was this page helpful?