PHP 中“不相等”运算符<> 和 != 之间的区别

2022-08-30 09:24:05

在 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.

我想没有太大的差异,但我很好奇。


答案 1

在主要的Zend实现中,没有任何区别。您可以从PHP语言扫描仪Flex描述中获取它:

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

生成的令牌位于何处。因此,Bison解析器不区分和令牌,而是平等对待它们:T_IS_NOT_EQUAL<>!=

%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

答案 2

正如公认的答案所指出的那样,实现是相同的,但是它们在文档中存在细微的区别......

根据此页面,运算符的优先级略高于 。<>!=

我不确定这是Zend实现中的错误,还是文档中的错误,或者只是PHP决定忽略优先规则的情况之一。

更新:文档已更新,并且 和 之间不再有任何区别。<>!=


推荐