phpbar.de logo

Mailinglisten-Archive

[php] foo ist nicht gleich foo!?

[php] foo ist nicht gleich foo!?

Niels Jäckel niels.jaeckel at silice.de
Die Aug 29 14:28:00 CEST 2006


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