Как в PHP сравнить false с null

«Как в PHP сравнить false с null» — вопрос из категории PHP Core, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В PHP результат сравнения false и null полностью зависит от используемого оператора сравнения из-за слабой типизации языка.

  • Нестрогое сравнение (== или !=): Происходит приведение типов. Поскольку оба значения false и null являются falsy (приводятся к false в булевом контексте), они считаются равными.

    var_dump(false == null);  // bool(true)
    var_dump(false != null);  // bool(false)
  • Строгое сравнение (=== или !==): Проверяет и значение, и тип. Тип falseboolean, тип nullnull. Они разные, поэтому значения не равны.

    var_dump(false === null); // bool(false)
    var_dump(false !== null); // bool(true)

Практическое правило: В коде, особенно при сравнении возвращаемых значений функций (где false может означать ошибку, а null — отсутствие значения), всегда используйте строгое сравнение (===/!==). Это предотвращает трудноуловимые баги.

// Потенциально опасный код
if ($result == false) {
    // Сработает и для false, и для null, и для 0, и для ''
}

// Корректный, предсказуемый код
if ($result === false) {
    // Сработает ТОЛЬКО если $result имеет тип boolean и значение false
}