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 |
|---|---|---|
TRUE | TRUE | FALSE |
TRUE | FALSE | TRUE |
FALSE | TRUE | TRUE |
FALSE | FALSE | FALSE |
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
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 erTRUEnur dann zurückgibt, wenn einer der AusdrückeTRUEund der andereFALSEist, aber nicht wenn beideTRUEoder beideFALSEsind. - 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, kannxorzur Validierung der Eingabe verwendet werden. - Im Gegensatz zu
andundorwertet derxor-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$xgleich$yoder$aungleich$bist, aber nicht beides. Solche Ausdrücke werden am häufigsten in einerif-Anweisung platziert. - Zu beachten ist, dass
xorein logischer Operator ist. Für bitweise XOR-Operationen (Umschalten einzelner Bits einer ganzen Zahl) wird stattdessen der Operator^verwendet. - Die verwandten Wortoperatoren sind
andundor. 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.