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
与!=
运算符完全相同。
他们有相同的优先权 。