[latex]Mae govannen![/latex]
("x" == 0)
Weil PHP probiert "x" in einen Integer umzuwandeln. Dies schlägt fehl und somit gibt PHP 0 zurück und somit wird der Term zu 0 == 0 und somit True.
ok, war mir nicht klar. Das ist das tückische an PHPs Ententyping.
Das ist wirklich _sehr_ tückischfinde ich eigentlich nicht. Normalerweise sollten sich einem Programmierer bei der nochmals zitierten Vergleichsoperation sämtliche Nackenhaare aufstellen, weil man hier einen String mit einem Integerwert vergleicht.
Das sieht man _hier_ zwar, weil es direkt fest im Code steht, aber spätestens wenn du "x" durch z.B. $my_var ersetzt, ist das überhaupt nicht mehr offensichtlich, da die Variable an einer ganz anderen Stelle gesetzt werden kann.
Tückisch finde ich nur, dass diese Operation ohne Fehler durchgeht. IMO sollte das *mindestens* eine Notice schmeißen, eigentlich sogar einen Fehler.
Würde jedenfalls unsauberen Programmierstil vermeiden; z.B. sowas:
Übergabe ans Script sei $_GET['num'] = "9"
if ($_GET['num'] == 9) {...}
wäre z.B. bequem, um einen den Wert, der ans Script übergeben wird, zu prüfen.
Glücklicherweise ist es eine (tw. überflüssige, aber hier unbewußt hilfreiche) Angewohnheit von mir, fast immer strict mit === zu vergleichen.
Gar keine schlechte Idee.
Ich bin JS-Lint-geschädigt ;)
Cü,
Kai
Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken in Richtung "Mess up the Web". (suit)
Foren-Stylesheet Site Selfzeug JS-Lookup
SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?