60
votes

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.

7
Well there is the fact that most people dont use <> as an op for non-equality in php even though its allowed :-)prodigitalson
I don't think there's a difference, but I'm interested in the answers. +1 for an interesting question.David says reinstate Monica
!= is probably more common...Felix Kling
@prodigitalson that may actually be and argument :) (readability etc)Trufa
<> may be convenient for VBA, Pascal or Excel programmersPaulH

7 Answers

66
votes

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
26
votes

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 !=.

8
votes

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

6
votes

<> means either bigger or smaller. != means not equal. They basically mean the same thing.

6
votes

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 !==.

2
votes

<> is exactly the same as != operator since both of them are parsed as T_IS_NOT_EQUAL token.

And they have same precedence.

2
votes

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.