PHP or
ist ein seltsames Schlüsselwort. Hier ist es in einem Codeausschnitt, der mich verwirrt:
Warum druckt der letzte 0 und nicht 1?
Dies liegt an der unterschiedlichen Operatorpriorität . Im dritten Fall wird die Zuweisung zuerst behandelt. Es wird so interpretiert:
%Vor% Der Operator ||
hat eine andere Priorität. Wenn Sie
Es wird funktionieren, wie Sie es erwarten.
Siehe das Handbuch zu logischen Operatoren
Es ist ($foo = 0) or 1;
. or
hat einen niedrigeren Vorrang vor Operatoren als =
.
Sie sollten in diesem Fall ||
verwenden, da es eine höhere Priorität als =
hat und daher wie erwartet ausgewertet wird.
Reihenfolge der Vorgänge. Das Wort "oder" hat viel weniger Vorrang als das entsprechende "||". Kleiner als der Zuweisungsoperator. Die Zuweisung erfolgt also zuerst und der Wert der Zuweisung ist der erste Operand für das "oder".
"oder" ist eher für die Flusssteuerung gedacht als für logische Operationen. Sie können etwas wie
sagen %Vor%wenn get_something codiert ist, um false zurückzugeben oder 0 bei einem Fehler.
In Ihrem dritten Beispiel hat der Operator = eine höhere Priorität als oder und wird daher zuerst ausgeführt. Die || der oberflächlich gleiche Operator hat eine höhere Priorität als =. Wie du sagst, interessant.
Tags und Links php