Christian Kruse: Warum verlangt php hier einen expliziten Stringvergleich?

Beitrag lesen

Hallo Regenbogenjonny,

Das hätte ich nicht erwartet. Kann mir jemand erklären, warum das so ist? Ich hätte gedacht, dass mein Pfad (der ja in $this->watermarkfile drin steht, sowohl != "0", wie auch != 0 wäre.

Das ist das automatische Type-Juggling von PHP. Durch den Vergleich mit der 0 wird der String in eine Zahl umgewandelt; da das fehlschlägt ist das Ergebnis halt 0, und dann steht da 0 == 0.

Um solche Fehler zu vermeiden ist es sinnvoll === zu verwenden anstatt ==.

LG,
CK