В чем разница между <> и! =

В PHP для проверки не равенства (без проверки типа) вы можете сделать это:

if( A != B ) {
    DO SOMETHING;
}

Но вы также можете сделать это, что имеет тот же результат:

if( A <> B ) {
    DO SOMETHING;
}

Есть ли разница?

Использует ли != over <> изменение оценки каким-либо образом, формой или формой?

Ответ 1

Забывая документацию в течение минуты, дайте возможность проверить исходный код. Начнем с сканера (lexer):

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

Поэтому они анализируют один и тот же токен. Позвольте проверить парсер:

expr T_IS_NOT_EQUAL expr { zend_do_binary_op(ZEND_IS_NOT_EQUAL, &$$, &$1, &$3 TSRMLS_CC); }

Итак, мы знаем, что активированный код операции ZEND_IS_NOT_EQUAL...

Теперь давайте рассмотрим операцию:

static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
    USE_OPLINE

    zval *result = &EX_T(opline->result.var).tmp_var;

    SAVE_OPLINE();
    ZVAL_BOOL(result, fast_not_equal_function(result,
        opline->op1.zv,
        opline->op2.zv TSRMLS_CC));

    CHECK_EXCEPTION();
    ZEND_VM_NEXT_OPCODE();
}

Так что буквально никакой разницы. Поскольку они анализируют один и тот же токен, они имеют точно такой же приоритет (поэтому документы являются неправильными или вводят в заблуждение). Поскольку они используют один и тот же исполнитель, и там нет точки принятия решения в подпрограмме opcode, они выполняют идентичный код.

Итак, да, <> и != являются взаимозаменяемыми на 100%, и нет никаких технических оснований для использования друг над другом.

С учетом сказанного, есть что-то важное, чтобы выиграть, будучи последовательным. Поэтому я рекомендую просто придерживаться != и делать с ним...

Изменить

Я обновил документы, чтобы отразить это, и исправил еще одну проблему с порядком приоритета (++ и - имеет тот же приоритет, что и кастинг). Проверьте это на docs.php.net

Ответ 2

Один старый, новый.

в соответствии с руководством:

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

используйте !=.

Небольшая разница: есть также порядок приоритета. смотрите здесь.

<> предшествует != в таблице приоритета, но они выполняют ту же самую вещь.

Ответ 3

Нет различий.

Однако != позволяет упростить добавление дополнительного = для принудительного сравнения типов.

Ответ 4

Как упоминалось на веб-сайте документации , <> и != являются просто синонимами. Это означает, что они полностью взаимозаменяемы. История php немного дикая, поэтому соглашения об именах, вплоть до того, как должны быть вызваны операторы, были и до сих пор не очень унифицированы.

Ответ 6

Нет никакой разницы. Я предполагаю, что < > - это то, что было добавлено в более поздней версии php. Вид напоминает мне о Питоне. Я думаю, что то же самое с использованием AND или && для оператора и оператора

Ответ 7

Это не совсем так, но я думаю, что помню!= был быстрее один раз, потому что я провел тест и обнаружил, что < > выполнял методы "diff" объектов, которые я сравнивал, что может быть медленнее чем методы сравнения.