Avatar ·

Diferença entre == e === em PHP

Diferença entre == e === em PHP: comportamento estranho ao comparar string e número

Olá a todos! Sou novo em PHP e me deparei com um comportamento inesperado dos operadores de comparação. Estou tentando entender a diferença entre == (igualdade não estrita) e === (igualdade estrita).

Tenho um código simples:

$a = '123abc';
$b = 123;

var_dump($a == $b);  // Resultado: true
var_dump($a === $b); // Resultado: false

Eu esperava que ambas as comparações retornassem false, porque os tipos são diferentes (string e número). Mas == retorna true. Por que isso acontece? Li que == faz coerção de tipos, mas não entendo como a string '123abc' pode ser igual ao número 123.

O que já tentei:

  • Testei com diferentes strings (por exemplo, 'abc123' — nesse caso == retornou false)
  • Li a documentação do PHP sobre operadores de comparação
  • Experimentei com outros tipos (booleanos, null)

Vocês podem explicar com um exemplo claro quando usar == e quando usar ===? E por que no meu caso ocorre isso?