“Zen” oder “Die vier Arten von Nichts”
Manche Dinge in PHP sind so komisch, dass man sie sich am besten einmal notiert, um sich dann in Ruhe darüber zu wundern.
Falls z.B. in PHP eine Variable $a auf den Wert null gesetzt ist, liefert isset($a) trotzdem false. (Das ist nichts Neues, aber es ist merkwürdig im Wortsinne.) Interessant auch das Verhalten von empty und is_null für ungesetzte Variablen und Variablen mit dem Wert null. Dazu initialisieren wir Variable $a mit dem Wert null und lassen Variable $b völlig uninitialisiert:
$a = null; # $b wird nicht initialisiert
Hier nun die Tests:
| Test | $a | $b |
|---|---|---|
| isset() | false | false |
| empty() | true | true |
| is_null() | true | true |
| === null | true | true |
Das Ergebnis von isset($a) ist zumindest gegen jede Intuition.
Bizarr wird es aber bei der gedoppelten (?) Notice
PHP Notice: Undefined variable: b in /home/aljoscha/test.php on line 10
Notice: Undefined variable: b in /home/aljoscha/test.php on line 10, die durch is_null($b) bzw. ($b === null) ausgelöst wird, und dem überraschenden Ergebnis: true!
