在PHP doc中,据说是运算符!具有比任何其他逻辑或任何比较运算符更高的优先级。
我创建了3个条件:
$x = 4; $y = -12;
if(!$x >= 0 AND !$y >= 0)){echo '1/ Validated';}
if(!($x >= 0) AND !($y >= 0)){echo '2/Validated';}
if(!($x >= 0 AND $y >= 0)){echo '3/Validated';}
如果回显有效,则第一个有效,第二个不有效,第三个有效。
我只是不明白为什么第一个if回声得到了验证。据我了解,这里比较$ x> = 0和$ y> = 0(首先是true和false),然后反转结果,使它成为false和true,我们最终得到if(false AND true)并且if中的代码不应执行。
我想我误解了“!”的能力。运算符或优先级,但我不知道在哪里。
有人可以澄清一下吗?
答案 0 :(得分:3)
!
的优先级高于>=
,因此:
if(!$x >= 0 AND !$y >= 0)
这样评估:
if(((!$x) >= 0) AND ((!$y) >= 0))
即!$x
在>=
之前被评估。
所以,我们有:
$x = 4
!$x
的计算结果为false(如果布尔值为true,则求4,然后将其求反)(!$x) >= 0
的计算结果为true(上一步的false评估为int为0)$y = -12
!$y
的计算结果为false(如果bool为true,则计算为-12,然后将其求反)(!$y) >= 0
的计算结果为true(上一步的false评估为int为0)!$x >= 0 AND !$y >= 0
的计算结果为true AND true
,这是正确的