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

时间:2016-11-07 13:36:12

标签: php ternary-operator

要使用PHP设置复选框数组,我使用DB中的编码小数。例如dec 5(二进制0000 0101将checkbox 1和3设置为checked 我在本例中使用了三元运算符作为复选框1:

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

结果为false,但应为true

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

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

有谁知道为什么你必须使用这样的括号?

1 个答案:

答案 0 :(得分:1)

按位AND运算符&优先级低于==。并且三元条件运算符具有您使用的运算符的最低优先级。

因此5 & 1 == 1 ? 'checked' : ''评估为(5 & (1 == 1)) ? 'checked' : ''

围绕5 & 1放置括号是正确的做法。