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.
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)
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 (!==)
?>Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators