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
!