Подтвердить что ты не робот

Разница между операторами "не равных" <> и!= В PHP

В PHP существует ли разница между операторами != и <>?

В manual говорится:

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

Я думаю, что нет огромных различий, но мне любопытно.

4b9b3361

Ответ 1

В основной реализации Zend нет никакой разницы. Вы можете получить его из описания Flex языка PHP scanner:

<ST_IN_SCRIPTING>"!="|"<>" {
    return T_IS_NOT_EQUAL;
}

Где T_IS_NOT_EQUAL - сгенерированный токен. Таким образом, Bison parser не различает токены <> и != и обрабатывает их одинаково:

%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

Ответ 2

Как отмечается в принятом ответе, реализация идентична, однако есть небольшая разница между ними в документации...

В соответствии с этой страницей оператор <> имеет несколько более высокий приоритет, чем !=.

Я не уверен, что это ошибка в реализации Zend, ошибка в документации или только один из тех случаев, когда PHP решает игнорировать правила приоритета.

Обновление: Документация обновляется и больше не существует разницы между <> и !=.

Ответ 3

Они одинаковы. Однако существуют также операторы !== и ===, которые проверяют точное соответствие, определяемое значением и типом.

Ответ 4

<> означает больше или меньше. != означает не равный. Они в основном означают одно и то же.

Ответ 5

Как все говорят, что они идентичны, один из одного языка C-style/shell, один из некоторых других, включая MySQL, который был очень интегрирован в прошлом.

<> следует рассматривать как синтаксический сахар, синоним !=, который является правильным стилем PHP для неравных.

Далее подчеркивается функция тождества тройного символа !==.