Hallo,
$x = 0;
...
if($x == "foo"){
echo "x= $x<br>";
}
>
> bring eine Ausgabe von "0".
ja, diese verteufelte automatische Typumwandlung. Mir wäre es auch lieber, wenn PHP an der Stelle eine Fehlermeldung bringen würde, etwa "incompatible types".
Tatsächlich geht der Parser hier nach dem ersten Operanden des Vergleichs. Das ist eine Zahl. Also wird, damit der Vergleich durchgeführt werden kann, der zweite Operand ebenfalls in eine Zahl konvertiert. Der String "foo" ergibt, als Zahl interpretiert, schlicht und ergreifend 0. Also ist die Vergleichsbedingung erfüllt.
Hättest du den typsicheren Vergleich mit === verwendet, wäre alles in Butter. Dann schlägt der Vergleich nämlich schon deshalb fehl (genauer: ergibt false), weil die Typen der Operanden nicht übereinstimmen.
> Er dürfte aber doch ...
Wer ist "er"?
Ciao,
Martin
--
In Ägypten haben früher 150000 Leute 35 Jahre lang an einer Pyramide gearbeitet. Aber bei uns arbeiten doppelt so viele Leute doppelt so lange allein an der Baugenehmigung.
(Dieter Nuhr, deutscher Kabarettist)
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(