Igualdad e identidad
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.
Desafío
FácilLee 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:
- Verifica si el valor de cadena es igual al entero usando comparación floja (
==) - Verifica si el valor de cadena es igual al entero usando comparación estricta (
===) - Verifica si el valor de cadena no es igual al entero usando comparación floja (
!=) - 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" == 42es verdadero (los valores son iguales después de la conversión de tipo)"42" === 42es falso (cadena vs int - tipos diferentes)"42" != 42es falso (los valores son iguales)"42" !== 42es verdadero (los tipos son diferentes)
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 (!==)
?>Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores de comparación y lógicos
Operadores de comparaciónIgualdad e identidadOperadores lógicos, parte 1Operadores lógicos, parte 2Repaso: lógica simple2Variables y tipos de datos
NúmerosCadenas y comillasBooleanosConvenciones de nombresRepaso: inicialización de variablesVariables vacíasConcatenación de cadenasObtener datos del usuarioConvertir a otros tipos5Lógica condicional
Sentencia ifIf - ElseEl operador ternarioOperador de coalescencia nulaSentencia switchRepaso - Tomar decisiones3Operadores básicos
Operadores aritméticosOperador móduloOperador de exponenciaciónAsignación combinadaIncremento/DecrementoPrecedencia de operadoresRepaso: cálculos simplesOperadores de cadenasPractica por tu cuenta: Compilador de PHP online