PHP中“不等于”运算符<>和!=之间的区别
Posted
技术标签:
【中文标题】PHP中“不等于”运算符<>和!=之间的区别【英文标题】:Difference between "not equal" operators <> and != in PHP 【发布时间】:2011-05-16 17:26:01 【问题描述】:在 php 中,!=
和 <>
运算符之间有什么区别吗?
在manual 中,它声明:
$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 中不等式的操作,即使它允许 :-)
我认为没有区别,但我对答案很感兴趣。为一个有趣的问题 +1。
!=
可能更常见...
@prodigitalson 实际上可能是和论点:)(可读性等)
<>
可能对 VBA、Pascal 或 Excel 程序员很方便
【参考方案1】:
在 Zend 的主要实现中没有任何区别。可以从PHP语言scanner的Flex描述中获取:
<ST_IN_SCRIPTING>"!="|"<>"
return T_IS_NOT_EQUAL;
其中T_IS_NOT_EQUAL
是生成的令牌。所以Bisonparser 不区分<>
和!=
标记,一视同仁:
%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】:正如公认的答案所指出的,实现是相同的,但是在文档中它们之间存在细微差别...
根据this page,<>
运算符的优先级略高于!=
。
我不确定这是 Zend 实现中的错误、文档中的错误,还是只是 PHP 决定忽略优先规则的情况之一。
更新:文档已更新,<>
和 !=
之间不再有任何区别。
【讨论】:
我们来了,所以有不同:) 哇我没想到!从这么简单的问题中得到了很好的阅读材料,谢谢先生!正如@karim 所说:有区别! (我可能会补充一点) @Alex,是的,这一定是一个非常特殊的情况! 与 != 具有相同的优先级,因为它们是相同的。它的优先级低于 、=。例如,尝试下一个代码codepad.org/zCdrxYm0,如果<>
运算符与<
具有相同的优先级,则if
语句下的条件将为false,因为1 不小于1(第一个1 表示true PHP 中的值),但由于它的优先级较低,因此首先计算表达式 2
@Trufa:保险箱就是使用括号。我不知道 Vitalii Fedorenko 所描述的确切区别,如果你非常依赖它,它会让你的代码对我来说不太可读。【参考方案3】:
它们是一样的。然而,也有 !==
和 ===
运算符用于测试完全相等,由值 和 类型定义。
【讨论】:
【参考方案4】:<>
表示更大或更小。 !=
表示不相等。它们基本上是同一个意思。
【讨论】:
【参考方案5】:正如大家所说,它们是相同的,一种来自一种语言分支 C-style/shell,一种来自其他一些语言分支,包括过去高度集成的 mysql。
<>
应该被视为语法糖,!=
的同义词,这是不等于的正确 PHP 样式。
三重身份功能!==
进一步强调。
【讨论】:
【参考方案6】:<>
与 !=
运算符完全相同,因为它们都被解析为 T_IS_NOT_EQUAL
令牌。
And they have same precedence.
【讨论】:
【参考方案7】:<>
和 !=
的操作符是一样的。
但是,就风格而言,在处理数值变量时,我更喜欢使用<>
。
也就是说,如果:
$a
是一个整数
$b
是一个整数
而不是问:
// if $a is not equal to $b
if ($a != $b)
我会问:
// if $a is either less than or greater than $b
if ($a <> $b)
这是我的代码中的视觉提示/提醒 $a
和 $b
肯定都打算是 数字 而不是一个或两个都是故意 @ 987654330@.
【讨论】:
以上是关于PHP中“不等于”运算符<>和!=之间的区别的主要内容,如果未能解决你的问题,请参考以下文章