Avatar ·

Diferencia entre == y === en PHP

Diferencia entre == y === en PHP: comportamiento extraño al comparar string y número

¡Hola a todos! Soy nuevo en PHP y me encontré con un comportamiento inesperado de los operadores de comparación. Estoy tratando de entender la diferencia entre == (igualdad no estricta) y === (igualdad estricta).

Tengo un código simple:

$a = '123abc';\n$b = 123;\n\nvar_dump($a == $b);  // Resultado: true\nvar_dump($a === $b); // Resultado: false

Esperaba que ambas comparaciones devolvieran false, porque los tipos son diferentes (string y número). Pero == devuelve true. ¿Por qué sucede esto? Leí que == hace conversión de tipos, pero no entiendo cómo el string '123abc' puede ser igual al número 123.

Lo que ya he probado:

  • Verifiqué con diferentes strings (por ejemplo, 'abc123' — allí == devolvió false)
  • Leí la documentación de PHP sobre operadores