Zuweisung statt Vergleich

Aus php bar

Wechseln zu: Navigation, Suche

Durch Unachtsamkeit kann es passieren, dass man bei einer If-Abfrage statt einem Vergleich eine Zuweisung schreibt. Dies könnte dann so aussehen:

1 if ($name = 'Max') { // eine Zuweisung, kein Vergleich
2     echo 'Hallo Max.';
3 }


Hier wird immer die Variable $name mit dem Wert Max gefüllt. Da dieser Ausdruck immer den Wert true ergibt, wird diese If-Abfrage immer ausgeführt, unabhängig davon, ob in $name vorher Max stand oder nicht. Um diesen logischen und manchmal auch schwer zu findenen Fehler vorzubeugen, sollte man sich angewöhnen, den konstanten Wert eines Vergleiches immer auf die linke Seite zu schreiben:

1 if ('Max' == $name ) { // Ein Vergleich
2     echo 'Hallo Max.';
3 }


Dies hat den Vorteil, dass man hier nur einen Vergleichsoperator verwenden kann. Bei einem Zuweisungsoperator wie =, weil man ein Gleichheitszeichen vergessen hat, weist PHP auf diesen Fehler mit einem Parse Error hin. Somit kann man so einen Schreibfehler sehr schnell erkennen.

Persönliche Werkzeuge