Is bool: примеры (PHP)
is_bool(mixed $value): boolОсновные сведения о функции is_bool
Функция is_bool() в PHP используется для проверки, является ли значение переменной логическим (булевым) типом. Она возвращает true, если проверяемое значение имеет тип bool (или исторически boolean), и false в противном случае.
Основное применение функции — валидация входных данных, особенно при работе с пользовательским вводом, результатами функций, возвращающих логические значения, или для обеспечения корректности типов в условных конструкциях и строгой типизации.
Функция принимает один обязательный параметр:
- $value (mixed) — проверяемое значение. Может быть любого типа.
Возвращаемое значение — bool (true или false).
Пример проверки переменных разных типов:
$var1 = true;
$var2 = false;
$var3 = 1;
$var4 = 'true';
$var5 = null;
var_dump(is_bool($var1));
var_dump(is_bool($var2));
var_dump(is_bool($var3));
var_dump(is_bool($var4));
var_dump(is_bool($var5));bool(true) bool(true) bool(false) bool(false) bool(false)
Пример использования в условном операторе:
$flag = false;
if (is_bool($flag)) {
echo 'Переменная $flag является булевым значением.';
} else {
echo 'Переменная $flag не является булевым значением.';
}Переменная $flag является булевым значением.
Для проверки типов в PHP существует семейство функций is_*.
- is_scalar() — проверяет, является ли переменная скалярным значением (int, float, string, bool). Отличается более широким охватом типов.
- gettype() — возвращает строку с названием типа переменной. Позволяет получить более детальную информацию, но для простой проверки на bool менее эффективна.
- === (оператор строгого сравнения) — может использоваться для сравнения с
trueилиfalse, но не определяет тип, а проверяет значение и тип одновременно. Например,$var === trueвернетtrueтолько если $var равно true и имеет тип bool.
Функцию is_bool() предпочтительно использовать, когда необходимо строго убедиться, что значение относится именно к логическому типу, а не к любому другому, который может быть приведен к нему.
Основная ошибка — путаница с приведением типов. Функция is_bool() проверяет именно тип, а не значение.
// Ошибка: ожидание, что строки 'true'/'false' или числа 1/0 будут определены как bool.
$values = ['true', 'false', 1, 0, '1', '0'];
foreach ($values as $value) {
var_dump($value, is_bool($value));
echo '---\n';
}string(4) "true" bool(false) --- string(5) "false" bool(false) --- int(1) bool(false) --- int(0) bool(false) --- string(1) "1" bool(false) --- string(1) "0" bool(false) ---
Еще одна ошибка — попытка использовать is_bool() для проверки результата функций, которые могут возвращать значения разных типов, без учета конкретного сценария.
// filter_var с FILTER_VALIDATE_BOOLEAN возвращает mixed: bool или false при неудаче.
$result = filter_var('yes', FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
// $result теперь имеет значение true (bool), но может быть false (bool) или null.
var_dump(is_bool($result)); // Вернет true, если 'yes' преобразовано в bool.bool(true)
Функция is_bool() остается стабильной и неизменной на протяжении многих версий PHP, включая PHP 8.x. Ее поведение и сигнатура не претерпели изменений. Однако, в PHP 8 усилилась система типов, что делает проверку типов еще более важной, особенно в контексте строгой типизации и объявленных типах (type hints) для аргументов и возвращаемых значений функций.
$data = [true, 'false', false, 0, null, [true]];
$results = array_map('is_bool', $data);
print_r($results);Array
(
[0] => 1
[1] =>
[2] => 1
[3] =>
[4] =>
[5] =>
)function validateBooleanField($value): bool {
if (is_bool($value)) {
return $value;
}
if (is_string($value)) {
$filtered = filter_var($value, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
return $filtered ?? false; // Если не преобразовалось, вернем false.
}
return (bool) $value; // Приведение для других типов.
}
echo validateBooleanField('yes') ? 'true' : 'false';
echo '\n';
echo validateBooleanField('invalid') ? 'true' : 'false';true false
// json_decode() может вернуть разные типы.
$jsonString = '{"is_active": true, "count": 5}';
$data = json_decode($jsonString);
var_dump(is_bool($data->is_active));
var_dump(is_bool($data->count));bool(true) bool(false)
// set_error_handler может возвращать bool.
$oldHandler = set_error_handler(function() { return true; });
var_dump(is_bool($oldHandler)); // Может быть bool (false) или callable.
restore_error_handler();bool(false)
Is bool в Python
В Python для проверки типа используется функция isinstance() или сравнение с классом bool через type().
value = True
print(isinstance(value, bool))
print(type(value) is bool)True True
Is bool в Javascript
В JavaScript используется оператор typeof, который для булевых значений возвращает строку 'boolean'.
let value = false;
console.log(typeof value === 'boolean');true
Is bool в MySQL
В SQL нет прямой функции проверки типа. Типы данных контролируются схемой таблицы. Однако в логических контекстах (например, в WHERE) значения интерпретируются как истина/ложь неявно. Тип BOOLEAN является синонимом для TINYINT(1).
SELECT TRUE IS TRUE, 0 IS FALSE;1, 1
Отличие от PHP: PHP имеет встроенную функцию проверки типа, тогда как в JavaScript и Python это реализовано через операторы или общие функции проверки типов.