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


Why do I need parenthesis in the condition part of a 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' : '')

有人知道为什么要这样用括号吗?

位与运算符&优先级低于==三元条件操作符的优先级在您使用的操作符中最低。

因此5 & 1 == 1 ? 'checked' : ''被求值为(5 & (1 == 1)) ? 'checked' : ''

你在5 & 1周围放置括号是正确的事情。