Mailinglisten-Archive |
Hallo Michael,
> function is_foo($x)
> {
> if($x != "foo")
> {
> $re = "IST NICHT foo";
> }
> else
> {
> $re = "IST foo!";
> }
> return $re;
> }
>
> [...]
>
> warum ist 0 = foo?!
Das liegt an der Art des Vergleichs, die du ansteuerst. Du übergibst der
Funktion einen Integer vom Wert 0. Dieser Integer soll mit einem String
verglichen werden. Um dies zu ermöglichen muss der String erstmal nach
Integer gecastet werden. Aus "foo" wird dann 0. Dann ist die Bedingung 0
!= 0 entsprechend falsch.
var_dump("foo");
var_dump((int) "foo");
Du solltest immer auf explizite Werte prüfen, z.B. $x === "foo" (wenn dus
ganz genau machen möchtest).
Gruß,
Niels
php::bar PHP Wiki - Listenarchive