## Logische Operatoren

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)

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open