inicio mail me! sindicaci;ón

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

Adie said,

April 27, 2009 @ 3:24 am

Great work.

bkw said,

Juni 18, 2009 @ 11:01 pm

Nicht nur die Ãœberschrift erinnert stark an die “drei Arten von ‘Keine'” im Chinesischen, die ein Freund mal von einem Professor für chinesische Medizin (mit herrlichem Chinatown-Akzent) erklärt bekommen hat:

* Erste Art von Keine: Gibts schon, ist aber nicht da

* Zweite Art von Keine: Gibts nicht, und ist auch nicht da.

* Dritte Art von Keine – Mhhh…, schwierig zu beschreiben, weil: Wenn man drüber redet: gibt’s schon!

Also sind uninitialisierte Variablen demnach die dritte Art von Keine. Benutzung setzt sie auf null, aber die es bleibt schwierig (Noticies).

SQL ist da mutiger und macht NULL ungleich allem Anderen, auch NULL selbst. Auch nicht unbedingt intuitiv, aber konsequent.

RSS feed for comments on this post · TrackBack URI

Schreibe einen Kommentar