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!=运算符完全相同。

他们有相同的优先权 。