Logische Operatoren
Beispiel | Name | Ergebnis |
---|---|---|
$a and $b | Und | true wenn sowohl $a als auch $b true ist. |
$a or $b | Oder | true wenn $a oder $b true ist. |
$a xor $b | Entweder Oder |
true wenn entweder $a oder $b
true ist, aber nicht beide.
|
! $a | Nicht | true wenn $a nicht true ist. |
$a && $b | Und |
true wenn sowohl $a als auch
$b true ist.
|
$a || $b | Oder |
true wenn $a oder $b true
ist.
|
Der Grund dafür, dass es je zwei unterschiedliche Operatoren für die "Und"- und die "Oder"-Verknüpfung gibt, ist der, dass die beiden Operatoren unterschiedliche Rangfolgen haben. (siehe auch Operator-Rangfolge.)
Beispiel #1 Logische Operatoren erklärt
<?php
// --------------------
// foo() wird nie aufgerufen werden, da die Operatoren Kurzschlussauswertung verwenden
$a = (false && foo());
$b = (true || foo());
$c = (false and foo());
$d = (true or foo());
// --------------------
// "||" hat eine höhere Rangfolge als "or"
// Das Ergebnis des Ausdrucks (false || true) wird $e zugewiesen
// Funktioniert wie: ($e = (false || true))
$e = false || true;
// Die Konstante "false" wird $f zugewiesen bevor die "or" Operation
// durchgeführt wird
// Funktioniert wie: (($e = false) or true)
$f = false or true;
var_dump($e, $f);
// --------------------
// "&&" hat eine höhere Rangfolge als "and"
// Das Ergebnis des Ausdrucks (true && false) wird $g zugewiesen
// Funktioniert wie: ($g = (true && false))
$g = true && false;
// Die Konstante "true" wird $h zugewiesen bevor die "and" Operation
// durchgeführt wird
// Funktioniert wie: (($h = true) and false)
$h = true and false;
var_dump($g, $h);
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
bool(true) bool(false) bool(false) bool(true)