Расскажите о булевой константе 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
при нестрогом сравнии (==
), но не тождественны (===
). - Широко используется как возвращаемое значение функций для указания успеха.