// Нестрогое сравнение ==
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() показывает тип и значение — незаменим при отладке проблем с типами.