is_bool()
Функция is_bool() — встроенная функция PHP, которая проверяет, является ли переменная булевым значением (true или false).
Введение
is_bool() — встроенная функция PHP, которая проверяет, содержит ли переменная значение типа boolean. Булев тип — простейший тип данных в PHP: он может принимать только значения true или false.
Важно понимать, что is_bool() проверяет тип переменной, а не является ли значение «истинным» или «ложным». Строка "true", целое число 1 или пустой массив вычисляются как истинные или ложные в инструкции if, но ни одно из них не является настоящим булевым значением, поэтому is_bool() возвращает false для всех них. Тест проходят только значения, полученные из булевых литералов (true/false) или из выражений сравнения/логических выражений (которые всегда возвращают булев тип).
На этой странице описаны синтаксис, возвращаемые значения is_bool() для типичных проверяемых значений, а также случаи применения функции в реальном коде.
Синтаксис
is_bool(mixed $value): boolФункция принимает один аргумент, $value — переменную для проверки — и возвращает true, если значение имеет тип boolean, иначе false. Функция никогда не изменяет переменную и не генерирует ошибок: она всегда возвращает собственное булево значение.
Пример использования
Пример ниже проверяет настоящее булево значение и строку, чтобы показать, что именно выводится:
Пример PHP is_bool()
Обратите внимание на вывод: при использовании echo для булева значения true превращается в строку "1", а false — в пустую строку "". Именно поэтому вторая строка выглядит пустой — is_bool($name) вернула false, и PHP выводит false как ничего. Чтобы получить однозначный результат при отладке, используйте var_dump() вместо echo, так как она выводит bool(true) / bool(false).
Что считается булевым значением
Распространённая ошибка — считать «истинные» значения булевыми. Это не так. В таблице ниже показано, что возвращает is_bool() для разных значений:
<?php
var_dump(is_bool(true)); // bool(true)
var_dump(is_bool(false)); // bool(true)
var_dump(is_bool(5 > 3)); // bool(true) — a comparison yields a boolean
var_dump(is_bool(1)); // bool(false) — integer, not boolean
var_dump(is_bool("true")); // bool(false) — string, not boolean
var_dump(is_bool(null)); // bool(false) — null is its own type
var_dump(is_bool([])); // bool(false) — empty array
?>Значения 1, "true", null и [] являются ложными или истинными в условиях, но их тип — integer, string, null и array соответственно, поэтому is_bool() их отклоняет.
Когда использовать
is_bool() наиболее полезна на границах вашего кода, где важен тип данных:
- Валидация аргументов функций. Если функция ожидает строгий флаг вкл/выкл,
is_bool()позволяет отклонить"yes",1илиnullдо того, как они приведут к скрытым ошибкам. - Различение
falseи «отсутствующего значения». Такие функции, какstrpos(), возвращаютfalseпри неудаче, но корректный0при успехе. Проверка типа с помощьюis_bool()(или оператора===) позволяет избежать их путаницы. - Обработка смешанных конфигураций. Настройки, загруженные из JSON или формы, могут поступать в виде строк;
is_bool()позволяет определить, является ли значение уже настоящим булевым или ещё требует преобразования с помощью boolval().
<?php
function setFeature(string $name, $enabled): void
{
if (!is_bool($enabled)) {
throw new InvalidArgumentException("\$enabled must be a boolean.");
}
echo "$name is now " . ($enabled ? "on" : "off") . "\n";
}
setFeature("dark_mode", true); // dark_mode is now on
// setFeature("dark_mode", 1); // would throw: $enabled must be a boolean
?>Связанные функции
is_bool() входит в семейство функций проверки типов PHP. Нужная функция зависит от проверяемого типа:
- is_int() — проверка целых чисел.
- is_string() — проверка строк.
- is_array() — проверка массивов.
- is_null() — проверка
null. - gettype() — получение типа любой переменной в виде строки.
- boolval() — преобразование значения в булево вместо его проверки.
Заключение
is_bool() отвечает на один точный вопрос: является ли тип этой переменной булевым? Она возвращает true только для true, false и результатов выражений сравнения или логических выражений — но никогда для истинных строк, чисел или массивов. Используйте её для защиты аргументов функций, различения настоящего false от «отсутствующего» значения и обеспечения работы кода с точными ожидаемыми типами данных.