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!
