PHP中"不等于"运算符<>和!=之间的区别

Tru*_*ufa 56 php operators

在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决定忽略优先规则的情况之一.

更新:该文件被更新,不再有任何区别<>!=.

  • <>与!=具有相同的优先级,因为它们是相同的.它的优先级低于<,>,<=和> =.例如,尝试下一个代码http://codepad.org/zCdrxYm0,如果`<>`运算符与`<`具有相同的优先级,则`if`语句下的条件将为false,因为1不小于1 (前1表示PHP中的真值),但由于它具有较低的优先级,因此首先计算表达式2 <1(当与1比较时等于0)并且整个表达式具有真值.因此,它是文档中的错误. (7认同)
  • 我们走了,所以有*差异:) (5认同)

Ale*_*lex 8

他们是一样的.然而,还有!=====运算符测试由值类型定义的精确相等.


Utk*_*glu 6

<>意思是更大或更小.!=意思是不平等.它们基本上意味着同样的事情.


Orb*_*ing 5

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

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

三重字符识别功能进一步强调!==.