📚
#30 23.09.2025 PHP Basics

Расскажите о булевой константе false (ложь).

false — булева константа “ложь”. При нестрогом сравнении (==) равна нулю, пустой строке, null, пустому массиву и строке '0'. При строгом (===) — только сама себе. Критически важно использовать === при проверке возврата функций вроде strpos().

Подробнее
⚠️
Внимание! Этот текст был сгенерирован AI-ассистентом. Информация может содержать неточности и требует проверки.

Полный ответ:

1. Основное назначение

false — это одна из двух скалярных булевых констант (вторая — true), представляющая логическое значение «ложь».

$isCompleted = false;
$isValid = true;

2. Регистронезависимость

Как и true, false регистронезависима, но стандарт PSR рекомендует использование в нижнем регистре.

$var = FALSE; // Работает
$var = False; // Работает
$var = false; // Рекомендуется

3. Приведение типов к false (Falsy Values)

В контекстах, где ожидается булево значение (например, в условиях if), PHP автоматически приводит другие типы данных к true или false. Значения, которые приводятся к false, называются «falsy».

Полный список «falsy»-значений (приводятся к false):

  • Сама константа false
  • Целое число 0 и float 0.0
  • Пустая строка '' и строка '0' (важная особенность!)
  • Пустой массив []
  • null
  • Объявленная, но неинициализированная переменная (генерирует предупреждение, но приводится к false)

4. Сравнение: == (равенство) vs === (тождественность)

Поведение false кардинально зависит от оператора сравнения.

  • == (Нестрогое сравнение): Производит приведение типов. Любое «falsy»-значение будет равно false.
    var_dump(0 == false);        // true
    var_dump('' == false);       // true
    var_dump('0' == false);      // true (особый случай!)
    var_dump([] == false);       // true
    var_dump(null == false);     // true
    
  • === (Строгое сравнение): Проверяет и значение, и тип. Возвращает true только если и значение false, и тип — boolean.
    var_dump(0 === false);       // false (integer vs boolean)
    var_dump('' === false);      // false (string vs boolean)
    var_dump(false === false);   // true
    

5. false в числовых и строковых контекстах

При необходимости PHP автоматически приводит false к другим типам:

  • В числовом контексте false приводится к целому числу 0.
    $result = 5 + false; // 5 + 0 = 5
    
  • В строковом контексте false приводится к пустой строке ''.
    echo 'Value: ' . false; // 'Value: ' (пустая строка)
    

6. Возвращаемое значение функций

false часто используется функциями как индикатор неудачи или ошибки.

Классические примеры:

  • strpos($haystack, $needle) — возвращает false, если подстрока не найдена.
  • file_get_contents($filename) — возвращает false при ошибке чтения файла.

Критически важный нюанс: При проверке результата таких функций всегда используйте строгое сравнение (===).

$position = strpos('Hello', 'H');

// ОШИБКА (неправильная проверка):
if ($position == false) { // Сработает и для 0, и для false
    echo 'Не найдено';
}

// ПРАВИЛЬНО (строгая проверка):
if ($position === false) {
    echo 'Не найдено';
} else {
    echo 'Найдено в позиции: ' . $position;
}

В примере выше strpos возвращает 0, если подстрока найдена в начале. Нестрогое сравнение 0 == false даст true, и код ошибочно решит, что подстрока не найдена.

7. Отличие от null и 0

  • false vs null: false — это булево значение «ложь», а null — отсутствие значения.
  • false vs 0: 0 — это целое число, а false — булево значение. Они равны при нестрогом сравнении, но не тождественны.

Итог:

false — это булева константа «ложь». Ключевые моменты:

  1. Имеет несколько «falsy»-эквивалентов (0, '', '0', [], null), которые равны ей при ==, но не при ===.
  2. Строгое сравнение (=== false) обязательно при проверке возвращаемого значения функций, которые могут вернуть 0 или false (например, strpos()).
  3. Приводится к 0 в числовом контексте и к '' в строковом.
  4. Широко используется как индикатор неудачи выполнения операции.