Equality & Identity
Parte da seção Fundamentos do Journey de PHP da Coddy — lição 24 de 71.
O PHP fornece duas maneiras de verificar se valores são iguais: o operador de igualdade (==) e o operador de identidade (===). Entender a diferença é crucial para escrever código confiável.
O operador de igualdade (==) compara valores após convertê-los para o mesmo tipo. Isso é chamado de "comparação solta":
<?php
var_dump(5 == "5"); // bool(true) - string convertida para número
var_dump(0 == false); // bool(true) - ambos se tornam 0
var_dump(1 == true); // bool(true) - ambos se tornam 1
?>O operador de identidade (===) compara tanto o valor e quanto o tipo. Nenhuma conversão ocorre, portanto, ambos devem corresponder exatamente:
<?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
?>Para comparações de "não igual", use != (não estrito) ou !== (estrito):
<?php
var_dump(5 != "5"); // bool(false) - os valores são iguais
var_dump(5 !== "5"); // bool(true) - os tipos diferem
?>Como uma boa prática, prefira === e !== para evitar surpresas inesperadas de conversão de tipo.
Desafio
FácilLeia dois valores da entrada: um número (como string) e um inteiro.
Use os operadores de igualdade e identidade para avaliar as seguintes comparações e imprima o resultado de cada uma usando var_dump(), cada uma em uma nova linha:
- Verifique se o valor da string é igual ao inteiro usando comparação frouxa (
==) - Verifique se o valor da string é igual ao inteiro usando comparação estrita (
===) - Verifique se o valor da string não é igual ao inteiro usando comparação frouxa (
!=) - Verifique se o valor da string não é igual ao inteiro usando comparação estrita (
!==)
Nota: Mantenha o primeiro valor como string (não o converta). Converta o segundo valor para inteiro.
Exemplo:
Se as entradas forem 42 e 42, a saída deve ser:
bool(true)
bool(false)
bool(false)
bool(true)Explicação:
"42" == 42é verdadeiro (os valores são iguais após a conversão de tipo)"42" === 42é falso (string vs int - tipos diferentes)"42" != 42é falso (os valores são iguais)"42" !== 42é verdadeiro (os tipos são diferentes)
Folha de consulta
O PHP tem duas maneiras de comparar valores:
Operador de igualdade (==) - comparação solta que converte os valores para o mesmo 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 identidade (===) - comparação estrita que verifica tanto o valor quanto o 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 não igual:
<?php
var_dump(5 != "5"); // bool(false) - values are equal (loose)
var_dump(5 !== "5"); // bool(true) - types differ (strict)
?>Melhor prática: Use === e !== para evitar conversões de tipo inesperadas.
Experimente você mesmo
<?php
// Ler entrada
$stringValue = trim(fgets(STDIN));
$intValue = intval(trim(fgets(STDIN)));
// TODO: Escreva seu código abaixo
// Use var_dump() para imprimir o resultado de cada comparação em uma nova linha:
// 1. Igualdade frouxa (==)
// 2. Igualdade estrita (===)
// 3. Desigualdade frouxa (!=)
// 4. Desigualdade estrita (!==)
?>Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições 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