“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
, die durch
Notice: Undefined variable: b in /home/aljoscha/test.php on line 10is_null($b)
bzw. ($b === null)
ausgelöst wird, und dem überraschenden Ergebnis: true
!