Расскажите о булевой константе true (истина).
true — булева константа “истина”. Регистронезависима (но пишут true). Тип — bool, в числах это 1, в строках — '1'.
Много значений приводятся к true в условиях (truthy): непустые строки (кроме '0'), ненулевые числа, непустые массивы, объекты.
Строгое равенство (===) проверяет именно тип bool.
Полный ответ:
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будет приведено к integer1.$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 — это булева константа, обозначающая истину. Ключевые моменты:
- Регистронезависима, но рекомендуется стиль
true. - Является значением типа
bool. - Приводится к integer
1в числовом контексте и к строке'1'в строковом. - Имеет множество “truthy” эквивалентов (непустые строки, ненулевые числа, массивы, объекты), которые равны
trueпри нестрогом сравнии (==), но не тождественны (===). - Широко используется как возвращаемое значение функций для указания успеха.