Разница между операторами "не равных" <> и!= В 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.
Я думаю, что нет огромных различий, но мне любопытно.
Ответы
Ответ 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 для неравных.
Далее подчеркивается функция тождества тройного символа !==
.
Ответ 6
<>
точно такой же, как и оператор !=
, поскольку оба они анализируются как токен T_IS_NOT_EQUAL
.
И у них одинаковый приоритет.