📚
#11 16.09.2025 PHP Basics

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

true — булева константа “истина”. Регистронезависима (но пишут true). Тип — bool, в числах это 1, в строках — '1'. Много значений приводятся к true в условиях (truthy): непустые строки (кроме '0'), ненулевые числа, непустые массивы, объекты. Строгое равенство (===) проверяет именно тип bool.

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

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

1. Основное назначение: Булево значение

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

$isCompleted = true;
$isValid = false;

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

Хотя общепринятым стандартом (PSR) и является написание в нижнем регистре (true), ключевое слово регистронезависимо.

$var = TRUE; // Работает
$var = True; // Тоже работает
// Но лучше всегда использовать `true` (lowercase)

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

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

К true приводятся:

  • Все ненулевые числа и строки с числами (кроме 0): 1, -1, 0.1, '123'
  • Непустые строки (кроме строки '0'): 'abc', ' ' (пробел)
  • Непустые массивы: [0]
  • Объекты: new stdClass()
  • Ресурсы: $file = fopen('test.txt', 'r')

Важные нюансы:

// Строка '0' - это false!
if ('0') {
    echo 'This will NOT be executed'; // Этот код НЕ выполнится
}

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

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

  • == (Нестрогое сравнение): Производит приведение типов. Любое “truthy” значение будет равно true.
    var_dump(1 == true);    // true
    var_dump('abc' == true); // true
    
  • === (Строгое сравнение): Проверяет и значение, и тип. Возвращает true только если и значение true, и тип — boolean.
    var_dump(1 === true);    // false (integer vs boolean)
    var_dump(true === true); // true
    

5. true в объявлении свойств и констант

  • Свойства класса: Можно инициализировать значением true.
    class Settings {
        public $debugMode = true;
        public const FEATURE_ENABLED = true;
    }
    

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

Функции часто возвращают true как индикатор успешного выполнения операции или подтверждение какого-либо условия.

function is_user_admin($user): bool {
    // ... проверка прав
    return true; // если пользователь admin
}

7. Нестандартное использование

  • Результат операции присваивания: Оператор присваивания (=) возвращает присвоенное значение. Это позволяет использовать его в условиях, но это часто является ошибкой.
    // Частая ошибка (подмена сравнения присваиванием):
    if ($result = someFunction()) { // Присваивание, а не сравнение!
        // Код выполнится, если someFunction() вернет truthy-value
    }
    
  • В качестве ключа массива: При использовании в качестве ключа массива true будет приведено к integer 1.
    $array = [true => 'value'];
    var_dump($array); // array(1) { [1]=> string(5) "value" }
    

8. Отличие от других “истинных” значений

Важно понимать, что true — это отдельное значение булевого типа. Оно не равно строке 'true', числу 1 или любому другому truthy-значению при строгом сравнении (===).

var_dump(true === 'true'); // false
var_dump(true === 1);      // false

Итог для экзамена:

true в PHP — это булева константа, обозначающая истину. Ключевые моменты:

  1. Регистронезависима, но рекомендуется стиль true.
  2. Является значением типа bool.
  3. Приводится к integer 1 в числовом контексте и к строке '1' в строковом.
  4. Имеет множество “truthy” эквивалентов (непустые строки, ненулевые числа, массивы, объекты), которые равны true при нестрогом сравнии (==), но не тождественны (===).
  5. Широко используется как возвращаемое значение функций для указания успеха.