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.