Also daran lags nicht!
Ich hatte aus Verzweiflung die beiden Abfragen einzeln durchgefuehrt und nciht wieder korrekt zurueckgesetzt.
Aber ich habe das Problem jetzt umgangen.
Die Variable $servererg[0] hatte einen numerischen Wert - die Null!
Ich nehme an daran lag es. Aber verstehen tue ich dann trotzdem nicht weshalb die IF Bedingung wahr ist, wenn ein nummerischer Wert in der Variablen steht??? Es muesste doch dann erst Recht false sein. Oder?
Ich habe das Problem jetzt ganz anders geloest: Ich weise der Variablen jetzt immer numerische Werte zu und frage diese ab.
Christian
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
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.