Difference between "not equal" operators <> and != in PHP

In the main Zend implementation there is not any difference. You can get it from the Flex description of the PHP language scanner:

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

Where T_IS_NOT_EQUAL is the generated token. So the Bison parser does not distinguish between <> and != tokens and treats them equally:

%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

They are the same. However there are also !== and === operators which test for exact equality, defined by value and type.


As the accepted answer points out the implementation is identical, however there is a subtle difference between them in the documentation...

According to this page the <> operator has slightly higher precedence than !=.

I'm not sure if this is a bug in the Zend implementation, a bug in the documentation, or just one of those cases where PHP decides to ignore the precedence rules.

Update: The documentation is updated and there is no longer any difference between <> and !=.

Tags:

Php

Operators