switch significa que operator operadores not aritmeticos php operators

php - significa - ¿Cuál es la diferencia entre<> y!=



que significa-> en php (7)

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.


No hay diferencia. Supongo que <> es algo que se agregó en una versión posterior de php. Me recuerda algo a Python. Creo que es lo mismo con el uso de AND o && para el operador y


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



Uno es viejo, uno es nuevo.

Según el 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.

utilizar != .

La diferencia menor: también hay un orden de precedencia. mira aquí.

<> viene antes != en la tabla de precedencia, pero logran exactamente lo mismo.


Ninguna diferencia.

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