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. |
我想没有什么大的区别,但我很好奇。
- 事实上,大多数人不使用<>作为php中不平等的操作,即使它允许:—)
- 我不认为有什么不同,但我对答案感兴趣。+一个有趣的问题。
- !=可能更常见…
- <>让我想起了基本的…
- @可能是和论点的神童:(可读性等)
- @各位,速度有什么不同吗?(尽管可能根本没有意义)
- @特鲁法:的确……更重要的是,我认为,正如亚历克斯指出的,也有严格的比较,这是经常使用的…对于松散的情况,执行<>没有多大意义,但仍然需要严格执行!==。
- 非相等检查运算符<>和!之间的差异可能是什么?=?
- <>对于VBA、Pascal或Excel程序员来说可能很方便。
在主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决定忽略优先规则的情况之一。
更新:文件更新,<>和!=之间不再有任何区别。
- 我们来了,所以有一点不同:)
- 哇,我没想到!从这么简单的问题中得到了很好的阅读材料,谢谢你,先生!正如@karim所说:有区别!(我想再加一句)
- @亚历克斯,是的,那一定是一个非常特殊的情况!
- <>的优先级与!,因为它们是相同的。它的优先级小于<、>、<=和>=。例如,尝试下一个代码codepad.org/zcdrxym0,如果<>运算符与<具有相同的优先级,则if语句下的条件将为假,因为1不小于1(第一个1表示php中的真值),但由于它具有较低的优先级,因此首先计算表达式2<1(等于0 w)。将hen与1)进行比较,整个表达式的值为真。因此,这是文档中的一个错误。
- @特鲁法:保险箱就是用括号。我不知道Vitalii Fedorenko所描述的确切区别,如果您非常依赖它,它将使您的代码对我来说更不可读。
它们是一样的。但是也有!==和===运算符,它们测试由值和类型定义的完全相等性。
<>表示较大或较小。!=表示不相等。他们的意思基本上是一样的。
正如大家所说的,它们是相同的,一个来自一个C-Style/Shell语言分支,另一个来自一些其他分支,包括过去高度集成的MySQL。
<>应被视为语法糖,是!=的同义词,它是不相等的正确php样式。
通过三字符标识函数!==进一步强调。
<>与!=运算符完全相同,因为它们都被解析为T_IS_NOT_EQUAL标记。
它们具有相同的优先权。