Difference between "not equal" operators <> and != in PHP
PhpOperatorsPhp Problem Overview
In PHP, is there any difference between the !=
and <>
operators?
In the manual, it states:
$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.
I guess there are no huge differences but I'm curious.
Php Solutions
Solution 1 - 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
Solution 2 - Php
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 !=
.
Solution 3 - Php
They are the same. However there are also !==
and ===
operators which test for exact equality, defined by value and type.
Solution 4 - Php
<>
means either bigger or smaller. !=
means not equal. They basically mean the same thing.
Solution 5 - Php
As everyone is saying they are identical, one from one language branch C-style/shell, one from some others including MySQL which was highly integrated in the past.
<>
should be considered syntactic sugar, a synonym for !=
which is the proper PHP style for not-equal.
Further emphasised by the triple character identity function !==
.
Solution 6 - Php
<>
is exactly the same as !=
operator since both of them are parsed as T_IS_NOT_EQUAL
token.
Solution 7 - Php
The operators <>
and !=
are the same.
However, as a matter of style, I prefer to use <>
when dealing with numerical variables.
That is, if:
$a
is an integer$b
is an integer
instead of asking:
// if $a is not equal to $b
if ($a != $b)
I will ask:
// if $a is either less than or greater than $b
if ($a <> $b)
This is a visual hint / reminder in my code that $a
and $b
are definitely both intended to be numerical rather than one or both being intentionally strings
.