PHP中“不等于”运算符<>和!=之间的区别
在PHP中, !=和<>运算符有什么不同?
在手册中 ,它指出:
$a != $b Not equal TRUE if $a is not equal to $b after type juggling. $a <> $b Not equal TRUE if $a is not equal to $b after type juggling.
我想没有什么大的差别,但我很好奇。
在Zend的主要实现中,没有任何区别。 你可以从PHP语言扫描器的Flex描述中获得它:
<ST_IN_SCRIPTING>"!="|"<>" { return T_IS_NOT_EQUAL; }
其中T_IS_NOT_EQUAL是生成的令牌。 所以Bison parsing器不会区分<>和!=令牌,而是将它们同等对待:
%nonassoc T_IS_EQUAL T_IS_NOT_EQUAL T_IS_IDENTICAL T_IS_NOT_IDENTICAL %nonassoc '<' T_IS_SMALLER_OR_EQUAL '>' T_IS_GREATER_OR_EQUAL
正如接受的答案所指出的那样, 实现是相同的,但是它们在文档中存在细微的差别。
根据这个页面 , <>运算符比!=有更高的优先级。
我不确定这是Zend实现中的错误,还是文档中的一个错误,或者是PHP决定忽略优先规则的情况之一。
更新:文档已更新, <>和!=之间不再有任何区别。
他们是一样的。 但也有!==和===运算符testing的确切的平等,由价值和types定义。
意味着更大或更小。 !=表示不等于。 他们基本上是一样的东西。
大家都说,它们是相同的,一个来自一个语言分支的C-style / shell,一个来自其他一些高度整合的MySQL。
<>应该被认为是语法糖,是!=的同义词,这是适合不相等的PHP风格。
通过三重身份识别function进一步强调!== 。
因为它们都被parsing为T_IS_NOT_EQUAL标记, T_IS_NOT_EQUAL与!=运算符完全相同。
他们有相同的优先权 。