Henryk Plötz: 7 Zeilen Code... Hilfe!

Beitrag lesen

Moin,

Der !&a ist mein Freund, wenn die Variable nicht existiert. Die gibt's aber und ich möchte nur prüfen, ob Sie nicht evtl. leer ist oder den Wert 0 hat. Der Wert kommt aus einem Eingabefeld, das nicht leer sein darf und auch nicht 0 als Ziffer enthalten.

Dein Problem liegt in der automatischen Typumwandlung, versuch doch einfach mal
if((int)$a != 0) echo "nichtnull"; else echo "null";
das wäre am ehesten was du beschrieben hast.

Ansonsten wandelt PHP die Typen hin und wieder um, weiss auch nicht mehr genau wie das Schema aussah, Fakt ist aber dass ("" == 0), ("test" == 0), (0 == "") und (0 == "test") alle wahr sind.

Wenn du überprüfen willst ob die beiden zu vergleichenden Dinge den gleichen Wert _und_ den gleichen Typ haben, musst du 3 Gleichheitszeichen benutzen (ab PHP 4): ("" === 0) ist falsch. Bei Eingabefeldern aus Formularen handelt es sich allerdings immer um Strings.

Vor diesem Hintergrund ist auch das Ergebnis deiner Abfrage klar:
Wenn ($a == 0) wahr ist, dann ist (($a == 0) oder irgendwas anderes) natürlich auch wahr.

--
Henryk Plötz
Grüße aus Berlin