Hi.
finde 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 ist schon mal ganz "böse".
Da widerspreche ich nun wiederum. Natürlich ist es (jenseits von didaktischem bzw. Prüfungs-Code wie dem obigen) einigermaßen unsinnig, zwei konstante Werte miteinander zu vergleichen. Als Werte von Variablen ist das jedoch gängig: Wenn Du etwa vergleichst, ob die 'Zahl', die der User im HTML-Formular eingegeben hat, 5 ist: Der Wert von $_GET['Zahl'] ist denn eben bestenfalls '5', nicht aber 5. Es kann aber durchaus gute Gründe geben, ihn mit 5 und nicht '5' zu vergleichen.
Und wenn der gesendete Wert nun 'x' ist? Eine Warnung oder Notice zu geben, wäre auch unschön, weil ich gerne möchte, dass meine Abfrage
if ('x' == 5)
dann einfach false liefert. Die 5 nach String zu casten (5 -> '5' und dann Stringvergleich) ist auch keine wirkliche Option, denn dann wäre etwa ' 5' != 5, was etwa im Sinne von Formulardaten auch schlecht wäre.
Als einziges bliebe, den Vergleichsoperator konzeptionell dahingehend zu verändern, dass er nur 'bedingt konvertiert': Wenn ein String nicht numerisch (im Sinne von is_numeric) ist, dann gibts beim Vergleich mit nem Integer automatisch false. Das wäre schön, aber ein etwas tieferer Eingriff in die PHP-Sprachstruktur. Und ist wohl wegen Abwärtskompatibilität ohnehin unrealistisch.
Ich halts mit Kai: es ist etwas doof, dass 'x' == 0 ist. Aber man muss wohl damit leben.
Viele Grüße,
der Bademeister