“不等于”运算符<>和!=之间的差异

Difference between “not equal” operators <> and != in PHP

在PHP中,!=<>运算符之间有什么区别吗?

手册中规定:

1
2
$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描述中获得:

1
2
3
<ST_IN_SCRIPTING>"!="|"<>" {
    return T_IS_NOT_EQUAL;
}

其中,T_IS_NOT_EQUAL是生成的令牌。因此bison解析器不区分<>!=令牌,并对它们进行同等处理:

1
2
%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决定忽略优先规则的情况之一。

更新:文件更新,<>!=之间不再有任何区别。


它们是一样的。但是也有!=====运算符,它们测试由值和类型定义的完全相等性。


<>表示较大或较小。!=表示不相等。他们的意思基本上是一样的。


正如大家所说的,它们是相同的,一个来自一个C-Style/Shell语言分支,另一个来自一些其他分支,包括过去高度集成的MySQL。

<>应被视为语法糖,是!=的同义词,它是不相等的正确php样式。

通过三字符标识函数!==进一步强调。


<>!=运算符完全相同,因为它们都被解析为T_IS_NOT_EQUAL标记。

它们具有相同的优先权。