2016-11-07 78 views
0

要使用PHP设置复选框数组我使用DB中的编码小数。例如12月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 - 好的,所以Âcomparision˚的优先级高于˚bitwise˚的运算符,谢谢。如果您发布答案,我会检查它。 – Ben

回答

1

按位与运算符&的优先级为优先于而不是==。并且三元条件运算符具有您正在使用的运算符的最低优先级。因此5 & 1 == 1 ? 'checked' : ''被评估为(5 & (1 == 1)) ? 'checked' : ''

将括号放在5 & 1左右是正确的做法。