W3docs

xor

Das xor-Schlüsselwort in PHP ist ein logischer Operator, der TRUE zurückgibt, wenn genau einer von zwei Ausdrücken TRUE und der andere FALSE ist.

Einführung

Das xor-Schlüsselwort in PHP ist der logische Exklusiv-Oder-Operator. Er gibt TRUE zurück, wenn genau einer seiner zwei Operanden TRUE und der andere FALSE ist. Wenn beide Operanden TRUE oder beide FALSE sind, gibt xor den Wert FALSE zurück. Das ist der wesentliche Unterschied zum or-Operator, der TRUE zurückgibt, sobald einer oder beide Operanden TRUE sind.

Vereinfacht ausgedrückt: xor beantwortet die Frage „Ist genau einer von beiden wahr, aber nicht beide?"

Diese Seite behandelt die Wahrheitstabelle für xor, ein ausführbares Beispiel, seine Vorrangigkeit (sowie den häufigen Zuweisungsfehler, den sie verursacht) und wann der Einsatz von xor tatsächlich sinnvoll ist.

Wahrheitstabelle

Das Verhalten von xor wird durch diese vier Fälle vollständig beschrieben:

$a$b$a xor $b
TRUETRUEFALSE
TRUEFALSETRUE
FALSETRUETRUE
FALSEFALSEFALSE

Das Ergebnis ist nur bei den zwei „gemischten" Zeilen TRUE — das macht ihn exklusiv.

Beispiel

Hier ist ein Beispiel, das die Verwendung von xor in PHP demonstriert:

Beispiel für das PHP-Schlüsselwort xor

php— editable, runs on the server

Im obigen Beispiel wird die if-Anweisung zu TRUE ausgewertet, weil $x > 0 gleich TRUE und $y > 10 gleich FALSE ist. Die Ausgabe des Codes lautet daher: "One of the expressions is true and the other is false".

Es ist zu beachten, dass xor eine niedrigere Vorrangigkeit als die Operatoren and und or hat. Daher ist es wichtig, bei Bedarf Klammern zu verwenden, um Ausdrücke korrekt zu gruppieren.

Vorrangigkeit und der Zuweisungsfehler

Die Wortoperatoren and, or und xor haben alle eine niedrigere Vorrangigkeit als der Zuweisungsoperator (=). Das führt häufig zu Verwirrung: Bei $result = true xor false bindet die Zuweisung zuerst, sodass PHP es als ($result = true) xor false auswertet. Das xor wird nachdem der Wert bereits zugewiesen wurde angewendet, und sein Ergebnis wird verworfen.

<?php

// = binds tighter than xor, so this is ($result = true) xor false
$result = true xor false;
var_dump($result); // bool(true)  — the xor never affects $result

// Use parentheses to get the value you expect
$result = (true xor false);
var_dump($result); // bool(true)

$result = (true xor true);
var_dump($result); // bool(false)

Die Faustregel lautet: Wenn das Ergebnis eines xor-Ausdrucks in einer Variablen gespeichert werden soll, den Ausdruck in Klammern einschließen. Wird xor nur innerhalb einer if-Bedingung verwendet (wie im obigen Beispiel), tritt das Problem nicht auf.

Die vollständige Vorrangtabelle und die Symboloperatoren (&&, ||, !) sind unter PHP Operators zu finden.

Weitere Informationen

Hier sind einige weitere Informationen zum xor-Operator in PHP:

  • Der xor-Operator wird auch als „exklusives Oder"-Operator bezeichnet, weil er TRUE nur dann zurückgibt, wenn einer der Ausdrücke TRUE und der andere FALSE ist, aber nicht wenn beide TRUE oder beide FALSE sind.
  • Der xor-Operator wandelt seine Operanden vor der Auswertung automatisch in boolean-Werte um und folgt dabei den standardmäßigen PHP-Typumwandlungsregeln.
  • Der xor-Operator kann nützlich sein, wenn geprüft werden soll, ob genau eine von zwei Bedingungen wahr ist, aber nicht beide. Wenn beispielsweise zwei Checkboxen in einem Formular vorhanden sind und sichergestellt werden soll, dass der Benutzer nur eine davon auswählt, kann xor zur Validierung der Eingabe verwendet werden.
  • Im Gegensatz zu and und or wertet der xor-Operator nicht kurz aus; beide Operanden werden unabhängig vom Wert des ersten Operanden immer ausgewertet.
  • Der xor-Operator kann mit anderen Operatoren wie == oder != kombiniert werden, um komplexere Ausdrücke zu erstellen. Zum Beispiel kann ($x == $y) xor ($a != $b) verwendet werden, um zu prüfen, ob entweder $x gleich $y oder $a ungleich $b ist, aber nicht beides. Solche Ausdrücke werden am häufigsten in einer if-Anweisung platziert.
  • Zu beachten ist, dass xor ein logischer Operator ist. Für bitweise XOR-Operationen (Umschalten einzelner Bits einer ganzen Zahl) wird stattdessen der Operator ^ verwendet.
  • Die verwandten Wortoperatoren sind and und or. PHP bietet auch die Symbolformen && und ||, die eine höhere Vorrangigkeit als ihre Wortkollegen haben.
  • Es ist erwähnenswert, dass der xor-Operator in der PHP-Programmierung nicht häufig eingesetzt wird, und in vielen Fällen lassen sich dieselben Ergebnisse mit anderen Operatoren oder Kontrollstrukturen erzielen. Er kann jedoch in bestimmten Situationen ein nützliches Werkzeug sein, wenn logische Operationen auf boolean-Werten durchgeführt werden müssen.

Übung

Übung
Was bedeutet der logische XOR-Operator (Exklusives ODER) in PHP?
Was bedeutet der logische XOR-Operator (Exklusives ODER) in PHP?
Was this page helpful?