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解析器不会区分<>
和!=
令牌并将它们同等对待:
%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决定忽略优先规则的其中一种情况。
更新:文档已更新, <>
和!=
之间不再有任何区别。
他们是一样的。 然而,也有!==
和===
运算符测试精确的相等性,由值和类型定义。
上一篇: Difference between "not equal" operators <> and != in PHP
下一篇: Comparing Performance in Python: equal versus non equal