inicio mail me! sindicaci;ón

Archive for Januar, 2009

“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!