is_null()
La funzione is_null() in PHP verifica se una variabile è null o meno. Scopri sintassi, differenze con isset() ed empty() e quando usare === null.
Introduzione
is_null() è una funzione PHP integrata che restituisce true quando una variabile contiene il valore null, e false altrimenti. null è il tipo speciale "nessun valore" di PHP — rappresenta una variabile che è stata esplicitamente svuotata, assegnata a null, o a cui non è mai stato assegnato un valore. Questa pagina tratta la sintassi, cosa rileva (e non rileva) is_null(), come si differenzia da isset() e empty(), e quando usare invece il confronto === null.
Sintassi
is_null(mixed $value): boolAccetta un argomento, $value, e restituisce un boolean:
| Input | Restituisce |
|---|---|
null | true |
Qualsiasi altro valore — 0, "", "0", false, [] | false |
Una fonte comune di bug è assumere che i valori "vuoti" siano null. Non lo sono: is_null() è rigorosa, quindi 0, la stringa vuota e false restituiscono tutti false.
Esempio base
Nota: quando viene usato con echo, PHP converte true in 1 e false in una stringa vuota, ecco perché la seconda riga non stampa nulla. Per vedere chiaramente i valori boolean, usa var_dump() invece di echo.
Null non è uguale a vuoto
Questo è il malinteso più frequente. Solo null è null — i valori che sembrano semplicemente vuoti non lo sono:
<?php
var_dump(is_null(null)); // bool(true)
var_dump(is_null(0)); // bool(false)
var_dump(is_null("")); // bool(false)
var_dump(is_null(false)); // bool(false)
var_dump(is_null([])); // bool(false)
?>Se vuoi intercettare tutti questi casi "vuoti" in una volta sola, usa invece empty(). Usa is_null() solo quando intendi specificamente "il valore è letteralmente null".
Un caso d'uso pratico
is_null() eccelle quando un valore è genuinamente opzionale e null è un indicatore significativo di "non fornito" — ad esempio una colonna del database o un campo API che può essere assente:
<?php
function greet(?string $middleName): string {
if (is_null($middleName)) {
return "No middle name on file.";
}
return "Middle name: $middleName";
}
echo greet(null) . "\n"; // No middle name on file.
echo greet("Marie") . "\n"; // Middle name: Marie
?>is_null() vs === null
In PHP moderno, is_null($var) e $var === null sono funzionalmente identici — entrambi sono controlli null rigorosi:
<?php
$x = null;
var_dump(is_null($x) === ($x === null)); // bool(true)
?>La forma === null è generalmente preferita nei codebase moderni: evita una chiamata di funzione (un piccolo vantaggio in termini di prestazioni), si legge in modo coerente con altri confronti rigorosi, e funziona nei contesti in cui è richiesta un'espressione costante. Ricorri a is_null() quando vuoi un test nominato e chiamabile — ad esempio come callback: array_filter($items, 'is_null').
Attenzione: variabili non definite
is_null() restituisce true per una variabile mai definita, ma emette anche un avviso Undefined variable:
<?php
var_dump(is_null($neverSet)); // Warning: Undefined variable ... then bool(true)
?>Se la variabile potrebbe non esistere affatto, verifica prima con isset() — isset() restituisce false sia per le variabili non definite che per quelle null e non genera mai avvisi. Usa is_null() solo su variabili di cui sai che sono definite.
Conclusione
is_null() è un test preciso e rigoroso per il valore null. Usalo quando null ha un significato specifico nel tuo codice e vuoi distinguerlo da 0, "" o false. Per i controlli del tipo "questo valore manca o è vuoto in qualsiasi senso", preferisci isset() o empty(), e per ispezionare il tipo effettivo di un valore consulta gettype() e i tipi di dati PHP.