Menu
Coddy logo textTech

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.

challenge icon

Desafio

Fácil

Leia 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:

  1. Verifique se o valor da string é igual ao inteiro usando comparação frouxa (==)
  2. Verifique se o valor da string é igual ao inteiro usando comparação estrita (===)
  3. Verifique se o valor da string não é igual ao inteiro usando comparação frouxa (!=)
  4. 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 (!==)

?>
quiz iconTeste seus conhecimentos

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