为什么PHP三元运算符的条件部分需要括号

为什么PHP三元运算符的条件部分需要括号,php,ternary-operator,Php,Ternary Operator,要使用PHP设置复选框数组,我使用数据库中的编码小数。例如,12月5日(二进制0000 0101)设置复选框1和复选框 我使用三元运算符,如本例中复选框1所示: (5 & 1 == 1 ? 'checked' : '') 结果是false,尽管它应该是true 只有在条件部分(5&1)==1中使用附加括号时,我才能得到正确的结果。最后,示例必须如下所示: ((5 & 1) == 1 ? 'checked' : '') 有人知道为什么必须这样使用括号吗?按位AND运算符&的优先

要使用PHP设置复选框数组,我使用数据库中的编码小数。例如,12月5日(二进制0000 0101)设置
复选框
1和
复选框
我使用三元运算符,如本例中复选框1所示:

(5 & 1 == 1 ? 'checked' : '')
结果是
false
,尽管它应该是
true

只有在条件部分
(5&1)==1
中使用附加括号时,我才能得到正确的结果。最后,示例必须如下所示:

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

有人知道为什么必须这样使用括号吗?

按位AND运算符
&
的优先级低于
=
。三元条件运算符的优先级低于所使用的运算符

所以
5&1==1?'checked':''
被评估为
(5&(1==1))?'checked':''


你在
5&1
周围加括号是正确的做法。

仔细看看你的意思是什么?你的意思是先检查
1==1
还是先检查
5&1
呢?@John Conde-好的,那么˚比较˚比˚按位˚运算符优先级更高,谢谢。如果你给出答案,我会检查它。