Mailinglisten-Archive |
Hi Michael, Michael Borchers schrieb: > <?php > function is_foo($x) > { > if($x != "foo") > { > $re = "IST NICHT foo"; > } > else > { > $re = "IST foo!"; > } > > return $re; > } > > echo "0: " . is_foo(0) . "<br>"; > echo "foo: " . is_foo("foo") . "<br>"; > echo "bar: " . is_foo("bar") . "<br>"; > ?> > > Ausgabe: > 0: IST foo! > foo: IST foo! > bar: IST NICHT foo > > warum ist 0 = foo?! die Antwort ist: Es liegt am Typejuggling von PHP. :-) Übergibst Du den Integer 0 und vergleichst ihn mittels != mit "foo", wird der Integer-Wert von "foo" gebildet (vgl. intval("foo")), welcher gleich ist 0. Da 0 gleich 0 ist, ist die Bedingung erfüllt. Die Lösung: Mache Deine if-Bedingung typenfest. Das sieht so aus: if($x !== "foo") Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive