significa - switch php




¿Cuál es la diferencia entre<> y!= (5)

Esta pregunta ya tiene una respuesta aquí:

En PHP para verificar la no igualdad (sin verificar el tipo) puede hacer esto:

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

Pero también puedes hacer esto, que tiene el mismo resultado:

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

¿Hay alguna diferencia?

¿Utilizando != Over <> cambia la evaluación de alguna manera, forma o forma?


Como se mencionó en el php.net/manual/en/language.operators.comparison.php , <> y != Son solo sinónimos. Eso significa que son completamente intercambiables. La historia de php es un poco salvaje, por lo que las convenciones de nomenclatura, incluso hasta el punto en que se debe llamar a los operadores, eran y aún no están realmente unificadas.


No es diferente, ¡pero creo que lo recuerdo! = Fue más rápido una vez, porque hice una prueba y descubrí que <> estaba ejecutando los métodos "diff" de los objetos que estaba comparando, que pueden ser más lentos que los "comparar "métodos.


Olvidando la documentación por un minuto, echemos un vistazo al código fuente. Empecemos con el escáner (lexer) :

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

Así que se analizan al mismo token. Vamos a ver el analizador :

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

Entonces, sabemos que el código de operación que se disparó es ZEND_IS_NOT_EQUAL ...

Ahora, vamos a ver la operación :

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();
}

Así que, literalmente, no hay diferencia. Dado que se analizan en el mismo token, tienen exactamente la misma prioridad (por lo que los documentos son incorrectos o engañosos). Ya que usan el mismo ejecutor, y no hay un punto de decisión en la rutina del código de operación, ejecutan un código idéntico.

Así que sí, <> y != Son 100% intercambiables, y no hay absolutamente ninguna razón técnica para usar una sobre la otra.

Dicho esto, hay algo importante que ganar al ser consistente. Así que recomiendo seguir con != Y terminar con esto ...

Editar

He actualizado los documentos para reflejar esto, y he solucionado otro problema con el orden de prioridad (++ y - tienen la misma prioridad que la conversión). Compruébelo en docs.php.net



Ninguna diferencia.

Sin embargo != Permite la conveniencia de agregar más fácilmente una comparación de tipo extra = for force.







operators