为什么在这个条件语句的变量之前有一个感叹号?

时间:2013-05-29 02:43:14

标签: php

这是条件陈述:

$comments = get_value_of_comments_as_string();

if( !$comments == "on" ){...}

!变量之前的$comments点的目的是什么,尤其是$comments包含字符串。

编辑:这个条件似乎不是一个错字,因为原始编码器喜欢这些条件语句中的5个。都是这样的。

1 个答案:

答案 0 :(得分:12)

!是逻辑否定运算符(或不是)所以基本上它将truthy值更改为false和falsey值为true。

我确信作者的意图是

!($comments == "on") // if comments == "on" return false

但他实际上说的是

(!$comments) == "on")  // if not comments == "on" ... this test will only succeed if comments is null or an empty string.  

更好的表达方式是

$comments != "on"

这种行为是因为!具有更高的优先级然后==所以它将在==之前进行评估。