Sven Rautenberg: immer wieder: 0 || NULL

Beitrag lesen

Moin!

if ($_POST['d1'])

Damit prüfst du aber nicht auf 0. Mal abgesehen davon, das eine Variable mit dem Inhalt 0 nicht leer ist.
Diese Zeile prüft, ob die Variable FALSE ist.

Nein, noch schlimmer!

Diese Zeile prüft, ob der Wert der Variablen zu "true" evaluiert - dann wird der IF-Block ausgeführt, sonst der ELSE-Block.

Alle Variablen evaluieren zu "true", außer sie evaluieren zu "false" in diesen Fällen:

$var = false;   // Boolean
$var = 0;       // Integer
$var = 0.0;     // Fliesskommazahl
$var = NULL;    // oder undefinierte Variable
$var = "";      // leerer String
$var = "0";     // String mit der Null
$var = array(); // leeres Array
sowie Objekte ohne Mitgliedsvariablen.

Siehe auch http://de.php.net/manual/de/language.types.boolean.php#language.types.boolean.casting

Mit anderen Worten: Man kriegt eine ganze Menge an Werten nicht, obwohl diese im Sinne der Programmlogik höchstwahrscheinlich als "true" gewerten werden sollten.

- Sven Rautenberg

--
"Love your nation - respect the others."