Difference between "not equal" operators <> and != in PHP
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.
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.
<>
means either bigger or smaller. !=
means not equal. They basically mean the same thing.
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 !==
.
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
.
精彩评论