Hallo
Das mit der Auswertungsreihenfolge hat axurit ja schon erklärt. Es funktioniert im Prinzip wie bei der Regel „Punkt- vor Strichrechnung“.
2*2+3 ist das gleiche wie (2*2)+3. Genauso gilt hier „and vor or“
In PHP gibt es die Besonderheit, dass die logischen Operatoren einmal mit hoher Priorität (&& und ||) und einmal mit niedriger Priorität (and und or) existieren.
Die drei Zeilen
if($a == "1" && $b == "2" || $c == "3")
if($a == "1" && $b == "2" or $c == "3")
if($a == "1" and $b == "2" or $c == "3")
bedeuten alle das gleiche, es müssen entweder die beiden Bedingungen $a==1 und $b==2 gelten oder die Bedingung $c==3.
Bei
if($a == "1" and $b == "2" || $c == "3")
hingegen muss die Bedingung $a==1 und zusätzlich eine der Bedingungen $b==2 und $c==3 gelten.
Ich benutze nur „and“ und „or“ und setze dann entsprechend viele Klammern, also
if(($a == "1" and $b == "2") or $c == "3")
if($a == "1" and ($b == "2" or $c == "3"))
Finde ich übersichtlicher.
Gruß, sigterm