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

PhpOperators

Php 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.

And they have same precedence.

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTrufaView Question on Stackoverflow
Solution 1 - PhpVitalii FedorenkoView Answer on Stackoverflow
Solution 2 - PhpMark ByersView Answer on Stackoverflow
Solution 3 - PhpAlexView Answer on Stackoverflow
Solution 4 - PhpUtku ZihniogluView Answer on Stackoverflow
Solution 5 - PhpOrblingView Answer on Stackoverflow
Solution 6 - PhpSalman AView Answer on Stackoverflow
Solution 7 - PhpRounin - Standing with UkraineView Answer on Stackoverflow