Christian Seiler: If Clause mit NULL

Beitrag lesen

Hallo Severin,

[if (!$var)]
Dieser Code kann meiner Meinung nach nicht funktionieren (ich bitte mich zu korrigieren, wenn ich mich irre). Der Grund ist, dass du auf einen boolschen Wert prüfst, NULL aber gar kein Wert ist, also weder true noch false noch sonst was.

Doch, der Code funktioniert für diesen Fall, jedoch wird die Bedingung auch erfüllt, wenn dort z.B. 0 drin steht oder ein leerer String enthalten ist.

Vgl:

var_dump ((bool) "hallo");       // bool(true)
var_dump ((bool)(int) "hallo");  // bool(false)
var_dump ((bool) "");            // bool(false)
var_dump ((bool) 0);             // bool(false)
var_dump ((bool) null);          // bool(false)

Meiner Meinung nach müsste if(is_null($row[3])) korrekt sein.

Ja. Sowie auch if ($row[3] === null). (Identitätsoperator)

Aber: if ($row[3] == null) wäre u.U. auch falsch:

var_dump (1 == null);             // bool(false)
var_dump ('hallo' == null);       // bool(false)
var_dump ((int)'hallo' == null);  // bool(true)
var_dump ('' == null);            // bool(true)
var_dump (0 == null);             // bool(true)
var_dump (null == null);          // bool(true)

Viele Grüße,
Christian