is_bool()
La funzione is_bool() in PHP verifica se una variabile è di tipo boolean oppure no. Un boolean può essere solo true o false.
Introduzione
is_bool() è una funzione PHP integrata che indica se una variabile contiene un valore boolean. Un boolean è il tipo di dato più semplice in PHP: può essere solo true o false.
La cosa fondamentale da capire è che is_bool() controlla il tipo della variabile, non se il valore è "truthy" o "falsy". Una stringa come "true", l'intero 1, o un array vuoto vengono valutati come truthy o falsy in un'istruzione if, ma nessuno di essi è effettivamente un boolean, quindi is_bool() restituisce false per tutti. Solo un valore proveniente da un letterale boolean (true/false) o da un'espressione di confronto/logica (che produce sempre un boolean) supera il test.
Questa pagina illustra la sintassi, cosa restituisce is_bool() per i valori che probabilmente testerai, e quando conviene usarla nel codice reale.
Sintassi
is_bool(mixed $value): boolAccetta un singolo argomento, $value — la variabile da ispezionare — e restituisce true se quel valore è di tipo boolean, false altrimenti. La funzione non modifica mai la variabile e non genera mai un errore: restituisce sempre un boolean.
Esempio di utilizzo
L'esempio seguente testa un boolean vero contro una stringa in modo da vedere esattamente cosa viene stampato:
Esempio di PHP is_bool()
Nota attentamente l'output: quando si usa echo con un boolean, true diventa la stringa "1" e false diventa una stringa vuota "". Ecco perché la seconda riga appare vuota — is_bool($name) ha restituito false, e PHP stampa false come nulla. Per ottenere un risultato inequivocabile durante il debug, usa var_dump() al posto di echo, perché stampa bool(true) / bool(false).
Cosa viene considerato boolean
Un errore comune è supporre che i valori "truthy" siano boolean. Non lo sono. La tabella seguente mostra cosa restituisce is_bool() per una serie di valori:
<?php
var_dump(is_bool(true)); // bool(true)
var_dump(is_bool(false)); // bool(true)
var_dump(is_bool(5 > 3)); // bool(true) — a comparison yields a boolean
var_dump(is_bool(1)); // bool(false) — integer, not boolean
var_dump(is_bool("true")); // bool(false) — string, not boolean
var_dump(is_bool(null)); // bool(false) — null is its own type
var_dump(is_bool([])); // bool(false) — empty array
?>I valori 1, "true", null e [] sono tutti falsy o truthy nelle condizioni, ma il loro tipo è rispettivamente intero, string, null e array — quindi is_bool() li rifiuta.
Quando usarla
is_bool() è più utile ai confini del tuo codice, dove il tipo di dato è importante:
- Validazione degli argomenti di una funzione. Se una funzione si aspetta un flag on/off rigoroso,
is_bool()ti permette di rifiutare"yes",1, onullprima che causino bug subdoli. - Distinguere
falseda "nessun valore". Funzioni comestrpos()restituisconofalsein caso di fallimento ma un valido0in caso di successo. Controllare il tipo conis_bool()(o l'operatore===) evita di confondere i due. - Gestione di configurazioni miste. Le impostazioni caricate da JSON o da un form possono arrivare come stringhe;
is_bool()indica se un valore è già un boolean reale o deve ancora essere convertito con boolval().
<?php
function setFeature(string $name, $enabled): void
{
if (!is_bool($enabled)) {
throw new InvalidArgumentException("\$enabled must be a boolean.");
}
echo "$name is now " . ($enabled ? "on" : "off") . "\n";
}
setFeature("dark_mode", true); // dark_mode is now on
// setFeature("dark_mode", 1); // would throw: $enabled must be a boolean
?>Funzioni correlate
is_bool() fa parte della famiglia delle funzioni di verifica del tipo di PHP. Quella giusta dipende dal tipo che ti interessa:
- is_int() — verifica se si tratta di un intero.
- is_string() — verifica se si tratta di una string.
- is_array() — verifica se si tratta di un array.
- is_null() — verifica se il valore è
null. - gettype() — ottiene il tipo di qualsiasi variabile come string.
- boolval() — converte un valore in boolean invece di limitarsi a testarlo.
Conclusione
is_bool() risponde a una domanda precisa: il tipo di questa variabile è boolean? Restituisce true solo per true, false e i risultati di espressioni di confronto o logiche — mai per stringhe truthy, numeri o array. Usala per proteggere gli argomenti delle funzioni, distinguere un false reale da un valore "mancante" e mantenere il codice compatibile con i tipi di dato esatti che ti aspetti.