W3docs

or

Das Schlüsselwort "or" in PHP erstellt logische Disjunktionen zwischen Ausdrücken. Erfahren Sie Syntax, Priorität und Verwendung des Operators.

Das PHP-Schlüsselwort „or"

Das Schlüsselwort or ist ein logischer Operator in PHP: Es verknüpft zwei boolesche Ausdrücke und gibt true zurück, wenn mindestens einer davon wahr ist. Es ist das Wort-Äquivalent des ||-Operators — beide liefern dasselbe logische Ergebnis, unterscheiden sich jedoch in der Operatorpriorität, was das Wichtigste ist, das man vor der Verwendung von or verstehen sollte.

Diese Seite behandelt die Syntax von or, wie die Priorität bei Zuweisungen Probleme verursacht, das Kurzschlussverhalten und wann or gegenüber || bevorzugt wird. Den inversen Operator finden Sie unter and; wie diese Bedingungen eingesetzt werden, zeigen if und if / else / elseif.

Syntax

if ($expression1 or $expression2) {
  // runs when either expression is true
}

PHP wertet zunächst $expression1 aus. Ist dieser bereits truthy, wird $expression2 nie ausgewertet (siehe Kurzschlussauswertung unten). Der Gesamtausdruck ist true, wenn mindestens ein Operand truthy ist, und nur dann false, wenn beide falsy sind.

$a$b$a or $b
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

or vs. || — die Prioritätsfalle

or und || bedeuten logisch dasselbe, aber or hat eine sehr niedrige Priorität — niedriger als der Zuweisungsoperator =. Das ändert die Interpretation dieser Zeile:

<?php
$a = false or true;   // parsed as: ($a = false) or true
var_dump($a);          // bool(false)  ← surprising!

$b = false || true;   // parsed as: $b = (false || true)
var_dump($b);          // bool(true)

Bei or findet die Zuweisung statt, bevor das or überhaupt berücksichtigt wird, sodass $a den Wert false erhält. Bei || wird zuerst der Vergleich ausgeführt. Faustregel: || in Zuweisungen und Ausdrücken verwenden; or dem unten gezeigten Kontrollfluss-Idiom vorbehalten.

Kurzschlussauswertung

Wie || wertet der or-Operator kurz aus: Wenn der linke Operand truthy ist, wertet PHP den rechten Operand überhaupt nicht aus. Damit lassen sich teure Funktionsaufrufe überspringen — und das ist die Grundlage für das or die()-Wächter-Muster.

<?php
function check() {
    echo "check() ran\n";
    return true;
}

if (true or check()) {
    echo "matched\n";
}
// Output:
// matched
// (check() never ran, so "check() ran" is NOT printed)

Wann or verwendet werden sollte

Aufgrund seiner niedrigen Priorität eignet sich or hervorragend für ein „Tu dies, oder behandle den Fehler"-Wächter-Muster, bei dem die Zuweisung/Anweisung links zuerst gebunden werden soll:

<?php
// Classic fallback idiom
$value = null;
$value or print("value was falsy\n");   // prints: value was falsy

// Common in legacy code (modern code prefers exceptions)
// $handle = fopen("data.txt", "r") or die("Cannot open file");

Beispiele

Schauen wir uns einige praktische Beispiele an, wie das Schlüsselwort „or" verwendet werden kann:

Beispiele für PHP or

php— editable, runs on the server

In diesen Beispielen wertet or die Bedingungen von links nach rechts aus und stoppt, sobald eine true ist. Wenn keine zutrifft, wird der Codeblock übersprungen.

Vorteile und Abwägungen

  • Lesbarkeit: Bedingungen in natürlicher Sprache auszuschreiben (if ($a or $b)) kann für Einsteiger lesbarer wirken als ||.
  • Wächter-Klausel-Idiom: Die niedrige Priorität macht das expr or die(...) / expr or handle()-Muster kompakt.
  • Vorsicht: Dieselbe niedrige Priorität macht or in Zuweisungen gefährlich. Im Zweifel || verwenden.

Einen vollständigen Überblick darüber, wie or unter den logischen und anderen Operatoren in PHP eingeordnet ist, finden Sie unter PHP Operators. Der komplementäre Operator, der beide Bedingungen erfordert, ist and.

Fazit

Das Schlüsselwort or verknüpft Bedingungen und gibt true zurück, wenn eine davon truthy ist. Es verhält sich logisch wie ||, hat aber eine niedrigere Priorität als =, sodass es nach der Zuweisung bindet — || in Ausdrücken verwenden und or für wächterartige Anweisungen reservieren. Zusammen mit der Kurzschlussauswertung ermöglicht das Verständnis dieser Prioritätsregel sichereres und klareres PHP.

Übungen

Übung
Was macht der OR-Operator in PHP?
Was macht der OR-Operator in PHP?
Was this page helpful?