Oi Victor, tudo bem?
A documentação do PHP explica que a comparação var_dump(100 == "1e2");
é considerada verdadeira porque o PHP faz uma conversão implícita do valor da string "1e2"
para o número 100
. Isso ocorre porque a string "1e2"
é uma notação científica que representa o número 100
. Portanto, quando você compara 100
com "1e2"
, o PHP entende que ambos os valores são iguais.
Por outro lado, a comparação var_dump(0 == "a");
é considerada falsa porque o PHP não consegue fazer uma conversão implícita do valor da string "a"
para um número. Como a string "a"
não representa um número válido, o PHP não consegue comparar o valor 0
com "a"
e retorna falso.
Em resumo, o PHP realiza conversões implícitas durante a comparação de valores, mas nem sempre é possível converter uma string para um número.
Um abraço e bons estudos,