在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.
Run Code Online (Sandbox Code Playgroud)
我想没有太大的差异,但我很好奇.
Vit*_*nko 64
在主要的Zend实现中没有任何区别.您可以从PHP语言扫描程序的Flex描述中获取它:
<ST_IN_SCRIPTING>"!="|"<>" {
return T_IS_NOT_EQUAL;
}
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 25
正如接受的答案所指出的那样,实现是相同的,但是文档中它们之间存在细微差别......
根据这个页面,<>
运营商的优先级略高于!=
.
我不确定这是Zend实现中的错误,文档中的错误,还是PHP决定忽略优先规则的情况之一.
更新:该文件被更新,不再有任何区别<>
和!=
.
正如每个人都说他们是相同的,一个来自一个语言分支C风格/ shell,一个来自其他一些包括MySQL,过去高度集成.
<>
应该被认为是语法糖,它的同义词!=
是不正确的PHP风格.
三重字符识别功能进一步强调!==
.