dedlfix: Mehrere Bedingungen abfragen schlägt fehl

Beitrag lesen

Tach!

[AND vs. &&] Tückische PHP-Stolperfalle.
Das stimmt zwar, aber beide liegen unterhalb der Vergleichsoperatoren. Das Problem tritt lediglich bei Zuweisungen und ?: auf.
Ich erinnere mich nicht mehr an Einzelheiten, aber ich entsinne mich, dass ich damit vor längerer Zeit mal auf die Schnauze gefallen bin.

Ja, ich auch.

$foo = bedingung1 AND bedingung2;

In $foo steht immer das Ergebnis des Ausdrucks bedingung1. bedingung2 wird anscheinend ignoriert. Finde mal darin die Ursache für den Programmfehler!

Es wird nämlich so berechnet:

($foo = bedingung1) AND bedingung2;

Der Zuweisungsoperator = hat einen höheren Rang als das AND. bedingung 2 wird zwar berechnet, wenn wegen des Kurzschlussverfahrens die Zuweisung nicht bereits false ergeben hat, aber das Ergebnis verpufft. Klammern setzen

$foo = (bedingung1 AND bedingung2);

oder die Verwendung von && führt zum gewünschten Ergebnis.

dedlfix.