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!“;
}
Axurit
17. August 2010 um 09:04
2
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