Trufa
Trufa

Reputation: 40717

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.

Upvotes: 67

Views: 11781

Answers (5)

Rounin
Rounin

Reputation: 29463

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.

Upvotes: 3

Vitalii Fedorenko
Vitalii Fedorenko

Reputation: 114480

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

Upvotes: 69

Orbling
Orbling

Reputation: 20602

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

Upvotes: 6

Utku Zihnioglu
Utku Zihnioglu

Reputation: 4873

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

Upvotes: 7

Alex
Alex

Reputation: 3652

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

Upvotes: 9

Related Questions