“不等于”运算符之间的差异<>和!=在PHP中

时间:2010-11-27 23:52:50

标签: php operators

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

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

7 个答案:

答案 0 :(得分:60)

在主要的Zend实现中没有任何区别。您可以从PHP Flexscanner描述获取它:

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

T_IS_NOT_EQUAL是生成的令牌。因此,Bison parser无法区分<>!=令牌并平等对待它们:

%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

答案 1 :(得分:22)

正如接受的答案指出实现是相同的,但文档中它们之间存在细微差别...

根据this page<>运算符的优先级略高于!=

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

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

答案 2 :(得分:8)

他们是一样的。但是,还有!=====个运算符,用于测试由值类型定义的完全相等。

答案 3 :(得分:6)

<>表示更大或更小。 !=意味着不平等。它们的意思基本相同。

答案 4 :(得分:5)

正如每个人都说它们是相同的,一个来自一个C语言/ shell的语言分支,一个来自其他一些,包括过去高度集成的MySQL。

<>应该被认为是语法糖,!=的同义词,这是不正确的PHP风格。

三重字符识别函数!==进一步强调。

答案 5 :(得分:2)

<>!=运算符完全相同,因为它们都被解析为T_IS_NOT_EQUAL令牌。

And they have same precedence

答案 6 :(得分:0)

运算符<>!=相同。

但是,作为样式,我更喜欢在处理数字变量时使用<>

也就是说,如果:

  • $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肯定是 都是数字而不是一个或多个两者都是故意strings