2016-11-07 5 views
0

Чтобы установить массив флажков с PHP, я использую закодированные десятичные числа из БД. Например, дес 5 (двоичные 0000 0101 наборов checkbox 1 и 3, чтобы checked
Я использую тройной оператор, как в этом примере для флажка 1:..Зачем нужна скобка в части условия тернарного оператора PHP

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

В результате false, хотя она должна быть true

только тогда, когда я использую дополнительные скобки в условии части (5 & 1) == 1 я могу получить правильный результат Наконец, пример должен выглядеть следующим образом:.

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

Кто-нибудь знает, почему вы должны использовать скобки, подобные этому?

+5

Посмотрите на [приоритет оператора] (http://php.net/manual/en/language.operators.precedence.php) –

+0

Хорошо, это вы имеете в виду? Вы хотите сначала проверить «1 == 1» или «5 и 1»? – scrappedcola

+0

@ John Conde - Хорошо, так что «сравнение» имеет более высокий приоритет, чем оператор ˚bitwise˚, спасибо. Если вы опубликуете ответ, я проверю его. – Ben

ответ

1

Побитовый оператор И & имеет нижний приоритет, чем ==. И оператор тройной условный оператор имеет самый низкий приоритет для операторов, которые вы используете.

Оценка: 5 & 1 == 1 ? 'checked' : '' оценивается как (5 & (1 == 1)) ? 'checked' : ''.

Ваши скобки для размещения около 5 & 1 - правильная вещь.