Menu
Coddy logo textTech

Equality & Identity

Parte de la sección Fundamentos del Journey de PHP de Coddy — lección 24 de 71.

PHP proporciona dos formas de verificar si los valores son iguales: el operador de igualdad (==) y el operador de identidad (===). Entender la diferencia es crucial para escribir código confiable.

El operador de igualdad (==) compara valores después de convertirlos al mismo tipo. Esto se llama "comparación suelta":

<?php
var_dump(5 == "5");    // bool(true) - string converted to number
var_dump(0 == false);  // bool(true) - both become 0
var_dump(1 == true);   // bool(true) - both become 1
?>

El operador de identidad (===) compara tanto el valor como el tipo. No se produce ninguna conversión, por lo que ambos deben coincidir exactamente:

<?php
var_dump(5 === "5");   // bool(false) - int vs cadena
var_dump(5 === 5);     // bool(true) - mismo tipo y valor
var_dump(0 === false); // bool(false) - int vs bool
?>

Para comparaciones de "no igual", use != (laxo) o !== (estricto):

<?php
var_dump(5 != "5");    // bool(false) - los valores son iguales
var_dump(5 !== "5");   // bool(true) - los tipos difieren
?>

Como mejor práctica, prefiera === y !== para evitar sorpresas inesperadas por conversión de tipos.

challenge icon

Desafío

Fácil

Lee dos valores de entrada: un número (como cadena) y un entero.

Usa los operadores de igualdad e identidad para evaluar las siguientes comparaciones e imprime el resultado de cada una usando var_dump(), cada una en una nueva línea:

  1. Verifica si el valor de cadena es igual al entero usando comparación floja (==)
  2. Verifica si el valor de cadena es igual al entero usando comparación estricta (===)
  3. Verifica si el valor de cadena no es igual al entero usando comparación floja (!=)
  4. Verifica si el valor de cadena no es igual al entero usando comparación estricta (!==)

Nota: Mantén el primer valor como cadena (no lo conviertas). Convierte el segundo valor a un entero.

Ejemplo:

Si las entradas son 42 y 42, la salida debería ser:

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

Explicación:

  • "42" == 42 es verdadero (los valores son iguales después de la conversión de tipo)
  • "42" === 42 es falso (cadena vs int - tipos diferentes)
  • "42" != 42 es falso (los valores son iguales)
  • "42" !== 42 es verdadero (los tipos son diferentes)

Hoja de referencia

PHP tiene dos formas de comparar valores:

Operador de igualdad (==) - comparación suelta que convierte los valores al mismo tipo antes de comparar:

<?php
var_dump(5 == "5");    // bool(true) - string converted to number
var_dump(0 == false);  // bool(true) - both become 0
var_dump(1 == true);   // bool(true) - both become 1
?>

Operador de identidad (===) - comparación estricta que verifica tanto el valor como el tipo:

<?php
var_dump(5 === "5");   // bool(false) - int vs string
var_dump(5 === 5);     // bool(true) - same type and value
var_dump(0 === false); // bool(false) - int vs bool
?>

Operadores de no igualdad:

<?php
var_dump(5 != "5");    // bool(false) - values are equal (loose)
var_dump(5 !== "5");   // bool(true) - types differ (strict)
?>

Mejor práctica: Use === y !== para evitar conversiones de tipo inesperadas.

Pruébalo tú mismo

<?php
// Leer entrada
$stringValue = trim(fgets(STDIN));
$intValue = intval(trim(fgets(STDIN)));

// TODO: Escribe tu código debajo
// Usa var_dump() para imprimir el resultado de cada comparación en una nueva línea:
// 1. Igualdad suelta (==)
// 2. Igualdad estricta (===)
// 3. Desigualdad suelta (!=)
// 4. Desigualdad estricta (!==)

?>
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos