is_null()
Die Funktion is_null() in PHP prüft, ob eine Variable null ist. Erfahren Sie Syntax, Unterschiede zu isset() und empty() sowie praktische Anwendungsfälle.
Einführung
is_null() ist eine eingebaute PHP-Funktion, die true zurückgibt, wenn eine Variable den Wert null enthält, andernfalls false. null ist PHPs spezieller „kein Wert"-Typ — er steht für eine Variable, die explizit geleert wurde, der null zugewiesen wurde oder der nie ein Wert gegeben wurde. Diese Seite behandelt die Syntax, was is_null() erkennt (und was nicht), wie es sich von isset() und empty() unterscheidet und wann stattdessen der === null-Vergleich sinnvoller ist.
Syntax
is_null(mixed $value): boolDie Funktion nimmt ein Argument, $value, und gibt einen boolean zurück:
| Eingabe | Rückgabe |
|---|---|
null | true |
Alles andere — 0, "", "0", false, [] | false |
Eine häufige Fehlerquelle ist die Annahme, dass „leere" Werte null sind. Das sind sie nicht: is_null() ist streng, daher geben 0, der leere String und false alle false zurück.
Einfaches Beispiel
Hinweis: Beim Ausgeben mit echo wandelt PHP true in 1 und false in einen leeren String um, weshalb die zweite Zeile nichts ausgibt. Um die boolean-Werte deutlich zu sehen, verwenden Sie var_dump() statt echo.
Null ist nicht dasselbe wie leer
Dies ist das häufigste Missverständnis. Nur null ist null — Werte, die sich lediglich „leer" anfühlen, sind es nicht:
<?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)
?>Wenn Sie alle diese „leeren" Fälle auf einmal abfangen möchten, verwenden Sie stattdessen empty(). Verwenden Sie is_null() nur dann, wenn Sie ausdrücklich meinen: „Der Wert ist buchstäblich null".
Ein praktischer Anwendungsfall
is_null() glänzt, wenn ein Wert tatsächlich optional ist und null als sinnvoller „nicht angegeben"-Marker dient — beispielsweise bei einer Datenbankspalte oder einem API-Feld, das fehlen kann:
<?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 modernem PHP sind is_null($var) und $var === null funktional identisch — beide sind strenge Null-Prüfungen:
<?php
$x = null;
var_dump(is_null($x) === ($x === null)); // bool(true)
?>Die Form === null wird in modernen Codebasen generell bevorzugt: Sie vermeidet einen Funktionsaufruf (kleiner Performance-Vorteil), liest sich konsistent mit anderen strikten Vergleichen und funktioniert dort, wo ein konstanter Ausdruck erforderlich ist. Greifen Sie auf is_null() zurück, wenn Sie einen benannten, aufrufbaren Test benötigen — beispielsweise als Callback: array_filter($items, 'is_null').
Fallstrick: undefinierte Variablen
is_null() gibt true für eine Variable zurück, die nie definiert wurde, löst dabei jedoch auch eine Undefined variable-Warnung aus:
<?php
var_dump(is_null($neverSet)); // Warning: Undefined variable ... then bool(true)
?>Wenn die Variable möglicherweise gar nicht existiert, prüfen Sie zunächst mit isset() — isset() gibt false für sowohl undefinierte als auch null-Variablen zurück und löst niemals eine Warnung aus. Verwenden Sie is_null() nur für Variablen, von denen Sie wissen, dass sie definiert sind.
Fazit
is_null() ist ein präziser, strenger Test auf den null-Wert. Verwenden Sie ihn, wenn null in Ihrem Code eine spezifische Bedeutung hat und Sie ihn von 0, "" oder false unterscheiden möchten. Für Prüfungen wie „fehlt dieser Wert oder ist er in irgendeiner Weise leer" bevorzugen Sie isset() oder empty(), und um den tatsächlichen Typ eines Wertes zu untersuchen, sehen Sie sich gettype() und PHP-Datentypen an.