为什么在PHP三元运算符的条件部分需要括号
问题描述:
要使用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 & 1 == 1 ? 'checked' : ''
被评估为(5 & (1 == 1)) ? 'checked' : ''
。
将括号放在5 & 1
左右是正确的做法。
看看[运算符优先顺序](http://php.net/manual/en/language.operators.precedence.php) –
那么你是什么意思?你的意思是先检查'1 == 1'还是先检查'5&1'? – scrappedcola
@ John Conde - 好的,所以Âcomparision˚的优先级高于˚bitwise˚的运算符,谢谢。如果您发布答案,我会检查它。 – Ben