Das ist kein Bug
Hallo,
auch wenn behauptet wird, dies sei ein Bug in PHP ist es ein
Verhalten, welches man von anderen Sprache (z.B. C) auch kennt.
Da PHP aber nur schwach typisiert ist tritt das Problem häufig auf.
Zur Erklärung :
Es wird versucht eine Integerzahl mit einem String zu vergleichen,
daher müssen beide Variablen auf den gleichen Typ gebracht werden.
PHP fängt also „links“ an und erkennt eine Integerzahl. Folgerichtig muß auch der String in eine Integerzahl überführt werden.
>http://de3.php.net/manual/de/language.types.string.p…
Erkärt wir das geht.
Da der String keine Zahlen enthält wird er zu 0 konvertiert.
Also steht im Programm nicht
if (0 == „Test“)… sondern if (0 == (int) „Test“)…
(int) „Test“ => 0
daraus folgt
if (0 == 0)
Die richtige (und einzig zuverlässige) Art und Weise dieses Problem zu umgehen ist das sog. TypeCasting womit PHP gezwungen wird, einen bestimmten Datentyp zu benutzen.
if ((string) 0 == „Test“ )…
Ich hoffe das hat die Problematik etwas verdeutlicht.
Auch wenn PHP den Vergleich von unterschiedlichen Typen anbietet sollte man immer genau bedenken was passiert.
Ciao
So9