2016-11-07 2 views
0

Um ein Array von Checkboxen mit PHP zu setzen, verwende ich codierte Dezimalzahlen aus einem DB. Zum Beispiel 5. Dezember (binär 0000 0101 Sätze checkbox 1 und 3-checked
ich einen ternären Operator wie in diesem Beispiel für Checkbox. 1:.Warum brauche ich Klammern im Bedingungsteil eines ternären PHP-Operators

(5 & 1 == 1 ? 'checked' : '') 

Das Ergebnis ist false, obwohl es true sein sollte

Nur wenn ich zusätzliche Klammer im Bedingungsteil verwenden (5 & 1) == 1 ich das richtige Ergebnis erhalten schließlich das Beispiel wie folgt aussehen muss.

((5 & 1) == 1 ? 'checked' : '') 

Weiß jemand, warum Sie Klammern so verwenden müssen?

+5

Schauen Sie in [Operator Vorrang] (http://php.net/manual/en/language.operators.precedence.php) –

+0

Nun, was meinst du? Willst du zuerst nach '1 == 1' oder nach '5 & 1' suchen? – scrappedcola

+0

@ John Conde - Ok, so hat eine'Comparisionª einen höheren Vorrang als ein'Bitwöchiger' Operator, danke. Wenn du eine Antwort postest, werde ich es überprüfen. – Ben

Antwort

1

Der bitweise UND-Operator & hat eine niedrigere Priorität als ==. Und der ternäre bedingte Operator hat die niedrigste Priorität der Operatoren, die Sie verwenden.

Also wird 5 & 1 == 1 ? 'checked' : '' als (5 & (1 == 1)) ? 'checked' : '' ausgewertet.

Die Platzierung der Klammern um 5 & 1 ist die richtige Vorgehensweise.

Verwandte Themen