¿Por qué === es más rápido que == en PHP?

El operador de comparación == (operador de igualdad) y === (operador de identidad) se utilizan para comparar dos valores. También se conocen como el operador vagamente igual (==) y el operador estrictamente idéntico (===) .
 

Símbolo Nombre Ejemplo Producción
== Igualdad $a == $b VERDADERO si $a es igual a $b después de hacer malabares con el tipo
=== Identidad $a === $b VERDADERO si $a es igual a $b, y ambos son del mismo tipo

Operadores de PHP: hay muchos operadores en PHP, pero el operador == y === realiza un tipo de tarea similar de manera estricta o casual. 
 

  • Si los operandos son de tipo diferente, entonces == y === producirán resultados diferentes . La velocidad de los operadores será diferente en este caso, ya que == realizará la conversión de tipo y luego hará la comparación.
  • Si los operandos son del mismo tipo, tanto == como === producirán los mismos resultados . La velocidad de ambos operadores es casi idéntica en este caso ya que ninguno de los operadores realiza ninguna conversión de tipo.

El operador de igualdad == convierte el tipo de datos temporalmente para ver si su valor es igual al otro operando, mientras que === (el operador de identidad) no necesita hacer ninguna conversión de tipo y, por lo tanto, se realiza menos trabajo, lo que lo hace más rápido. que ==.
Ejemplo 1: 
 

php

<?php
 
// 0 == 0 -> true as first type
// conversion is done and then
// checked if it is equal or not
var_dump(0 == "a");
 
// 1 == 1 -> true
var_dump("1" == "01");
 
// 10 == 10 -> true
var_dump("10" == "1e1");
 
// 100 == 100 -> true
var_dump(100 == "1e2");
 
// 0 === "a" -> false in this type
// conversion is not done only
// checking is there if they are
// equal or not
var_dump(0 === "a");
 
// "1" === "01" -> false
var_dump("1" === "01");
 
// "10" === "1e1" -> false
var_dump("10" === "1e1");
 
// 100 == "1e2" -> false
var_dump(100 === "1e2");
 
switch ("a") {
case 0:
    echo "In first case";
    break;
     
// Never reached because "a" is already
// matched with 0 as in switch == is used
case "a": 
    echo "In second case";
    break;
}
?>

Producción: 
 

bool(true)
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
bool(false)
bool(false)
In first case

Ejemplo 2: 
 

php

<?php
 
// TRUE - same as (bool)1 == TRUE
var_dump(1 == TRUE);
 
// TRUE - same as (bool)0 == FALSE
var_dump(0 == FALSE);
 
// FALSE - not same 1 and TRUE as
// 1 is integer and TRUE is boolean
var_dump(1 === TRUE);
 
// FALSE - not same 0 and FALSE as 0
// is integer and FALSE is boolean
var_dump(0 === FALSE);
?>

Producción: 
 

bool(true)
bool(true)
bool(false)
bool(false)

Nota: El operador === realiza una ‘comparación segura de tipos’, solo devolverá verdadero si ambos operandos tienen el mismo tipo y valor, mientras que si solo se va a comparar el valor == se usa.
 

Publicación traducida automáticamente

Artículo escrito por g_ragini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *