Boolval: примеры (PHP)
boolval(mixed $value): boolФункция boolval преобразует переданное значение в его логический (булев) эквивалент. Она была введена в PHP 5.5.0.
Функция часто используется при необходимости явного приведения различных типов данных к булеву типу для логических проверок, сравнений или передачи в функции, ожидающие строго параметр типа bool.
Функция принимает один обязательный аргумент:
- $value – значение, которое требуется преобразовать в булев тип. Может быть любого типа.
Возвращаемое значение – результат преобразования $value к типу bool согласно стандартным правилам приведения типов PHP.
Примеры преобразования различных типов данных:
echo 'boolval(0): '; var_dump(boolval(0));
echo 'boolval(42): '; var_dump(boolval(42));
echo 'boolval(0.0): '; var_dump(boolval(0.0));
echo 'boolval(-1.5): '; var_dump(boolval(-1.5));
echo 'boolval(""): '; var_dump(boolval(""));
echo 'boolval("0"): '; var_dump(boolval("0"));
echo 'boolval("false"): '; var_dump(boolval("false"));
echo 'boolval("hello"): '; var_dump(boolval("hello"));
echo 'boolval([]): '; var_dump(boolval([]));
echo 'boolval([1,2]): '; var_dump(boolval([1,2]));
echo 'boolval(null): '; var_dump(boolval(null));
echo 'boolval(new stdClass): '; var_dump(boolval(new stdClass));boolval(0): bool(false)
boolval(42): bool(true)
boolval(0.0): bool(false)
boolval(-1.5): bool(true)
boolval(""): bool(false)
boolval("0"): bool(false)
boolval("false"): bool(true)
boolval("hello"): bool(true)
boolval([]): bool(false)
boolval([1,2]): bool(true)
boolval(null): bool(false)
boolval(new stdClass): bool(true)- (bool) или (boolean) – приведение типов. Является оператором приведения, а не функцией. Работает идентично
boolval().$result = (bool) "0"; // false - settype($var, 'bool') – преобразует переменную на месте. Возвращает true/false в зависимости от успеха преобразования, а не само булево значение.
$var = 1; settype($var, 'bool'); // $var теперь true - filter_var($value, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) – более строгое преобразование строк. Распознает '1', 'true', 'on', 'yes' как true; '0', 'false', 'off', 'no', '' как false; для остальных значений возвращает null (с флагом FILTER_NULL_ON_FAILURE).
filter_var('off', FILTER_VALIDATE_BOOLEAN); // false filter_var('disabled', FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE); // null
boolval() предпочтительнее для простого и быстрого приведения любого значения к булеву типу по стандартным правилам PHP. Оператор (bool) – его синоним. filter_var() с флагом FILTER_VALIDATE_BOOLEAN полезен для парсинга строковых значений из форм конфигураций.
- Ожидание, что строка 'false' преобразуется в false. По правилам PHP непустая строка всегда true.
$result = boolval('false'); // true // Правильный подход для строк: $result = filter_var('false', FILTER_VALIDATE_BOOLEAN); // false - Сравнение результата boolval() без учета строгости типов.
if (boolval('0') == false) { echo 'Равно'; } // Выведет 'Равно' if (boolval('0') === false) { echo 'Идентично'; } // Не выведет, так как тип результата bool, а значение false - Путаница с объектами и ресурсами. Любой объект (даже без свойств) и валидный ресурс преобразуются в true. Только особый случай: объект с магическим методом
__toString(), возвращающим пустую строку или '0', все равно даст true.class EmptyClass {} $obj = new EmptyClass(); var_dump(boolval($obj)); // bool(true)
- PHP 5.5.0 – первоначальное введение функции
boolval(). - PHP 7.0.0 – значимых изменений в поведении функции не было. Общие изменения в движке Zend могли косвенно повлиять на производительность.
- PHP 8.0.0 – поведение функции остается стабильным и соответствует стандартным правилам приведения типов. Изменений специфично для
boolval()не зафиксировано.
// Фильтрация массива, удаляющая "ложные" значения
$array = [0, 1, '', 'text', false, null, [], [1]];
$filtered = array_filter($array, 'boolval');
print_r($filtered);Array
(
[1] => 1
[3] => text
[7] => Array
(
[0] => 1
)
)// Функция может возвращать различные типы, но нам нужен булев признак
function findUser($id) {
// ... возвращает массив данных или null
return rand(0,1) ? ['id' => $id] : null;
}
$userExists = boolval(findUser(5));
echo $userExists ? 'Найден' : 'Не найден';// Объект с __toString() не влияет на boolval
class MagicString {
public function __toString() {
return '0';
}
}
$obj = new MagicString();
var_dump(boolval($obj)); // true (объект)
var_dump(boolval((string)$obj)); // false (строка '0')// Для явного указания типа в условных операторах
$value = simplexml_load_string(' '); // SimpleXMLElement может быть "ложным" при пустоте
if (boolval($value->children())) {
echo 'Есть дочерние элементы';
} else {
echo 'Нет дочерних элементов';
}Нет дочерних элементов
// Компактная запись сложной проверки в одну булеву переменную
$isValid = boolval(
preg_match('/^[a-z]+$/', $input)
&& strlen($input) > 3
&& someExternalCheck($input)
);
// $isValid теперь явно имеет тип boolBoolval в Python
Функция bool(). Поведение схоже, но есть отличия в деталях. Например, пустая коллекция (список, словарь) и ноль приводятся к False.
print(bool(0)) # False
print(bool([])) # False
print(bool("0")) # True (строка '0' не пустая)False False True
Boolval в Javascript
Оператор двойного отрицания !!value или функция Boolean(value). Логика похожа, но пустой массив/объект приводятся к true.
console.log(Boolean(0)); // false
console.log(Boolean("0")); // true
console.log(Boolean([])); // true (отличие!)
console.log(!!{}); // trueBoolval в MySQL
Явное приведение типов с помощью CAST(expr AS BOOLEAN) или expr IS TRUE. Преобразует ненулевые числа и непустые строки в TRUE (1).
SELECT CAST(0 AS BOOLEAN), CAST('false' AS BOOLEAN), CAST('' AS BOOLEAN);0, 1, 0
Явное приведение (bool)value. Ноль и нулевой указатель дают false, все остальное – true.