// Нестроге порівняння ==
0 == "foo" // true (до PHP 8: "foo" → 0)
0 == "" // true (до PHP 8)
"1" == "01" // true
100 == "1e2" // true
null == false // true
// PHP 8 виправив: рядок порівнюється як рядок якщо не числовий
0 == "foo" // false в PHP 8+
Завжди використовуйте строге порівняння === і !== — воно перевіряє і тип, і значення. Вмикайте declare(strict_types=1).
var_dump() показує тип і значення — незамінний при відлагодженні проблем з типами.