If-Bedingung mit && und or

Hi Leute,

kurze Frage; Ist es möglich, in einer if-Bedingung UND- und ODER-Bedingungen einzufügen, oder muss ich es dafür verschachteln?

Falls es möglich ist, was muss man dabei beachten und welche Bedingung hat vorrang?

Bsp:

if($a == „1“ && $b == „2“ or $c == „3“) {
echo „So soll es sein!“;
}

Hallo,

if($a == „1“ && $b == „2“ or $c == „3“) {
echo „So soll es sein!“;
}

RTFM: http://de3.php.net/manual/de/language.operators.prec…

Demnach bindet && stärker als or. Also:

$a=1;$b=2;$c=beliebiger Wert -> „So soll es sein!“
$a=beliebiger Wert;$b=beliebiger Wert;$c=3 -> „So soll es sein!“

Gruß
Axurit

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

Danke. Genau diese Antwort hab ich überall gesucht. Hab’s kappiert ^^

Thorsten