Boolval: примеры (PHP)

Преобразование к логическому типу: работа с boolval в PHP
Раздел: Работа с переменными
boolval(mixed $value): bool
Функция boolval

Функция 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)
Похожие функции в PHP
  • (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
  • PHP 5.5.0 – первоначальное введение функции boolval().
  • PHP 7.0.0 – значимых изменений в поведении функции не было. Общие изменения в движке Zend могли косвенно повлиять на производительность.
  • PHP 8.0.0 – поведение функции остается стабильным и соответствует стандартным правилам приведения типов. Изменений специфично для boolval() не зафиксировано.
Расширенные примеры
Использование в комбинации с другими функциями
Пример php
// Фильтрация массива, удаляющая "ложные" значения
$array = [0, 1, '', 'text', false, null, [], [1]];
$filtered = array_filter($array, 'boolval');
print_r($filtered);
Array
(
    [1] => 1
    [3] => text
    [7] => Array
        (
            [0] => 1
        )
)
Преобразование возвращаемого значения функций
Пример php
// Функция может возвращать различные типы, но нам нужен булев признак
function findUser($id) {
    // ... возвращает массив данных или null
    return rand(0,1) ? ['id' => $id] : null;
}
$userExists = boolval(findUser(5));
echo $userExists ? 'Найден' : 'Не найден';
Работа с магическими методами объектов
Пример php
// Объект с __toString() не влияет на boolval
class MagicString {
    public function __toString() {
        return '0';
    }
}
$obj = new MagicString();
var_dump(boolval($obj));        // true (объект)
var_dump(boolval((string)$obj)); // false (строка '0')
Строгое приведение в условиях
Пример php
// Для явного указания типа в условных операторах
$value = simplexml_load_string(''); // SimpleXMLElement может быть "ложным" при пустоте
if (boolval($value->children())) {
    echo 'Есть дочерние элементы';
} else {
    echo 'Нет дочерних элементов';
}
Нет дочерних элементов
Создание булевых флагов из сложных условий
Пример php
// Компактная запись сложной проверки в одну булеву переменную
$isValid = boolval(
    preg_match('/^[a-z]+$/', $input)
    && strlen($input) > 3
    && someExternalCheck($input)
);
// $isValid теперь явно имеет тип bool
Аналоги в других языках

Boolval в 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(!!{});              // true

Boolval в 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
C/C++

Явное приведение (bool)value. Ноль и нулевой указатель дают false, все остальное – true.

PHP boolval function comments

En
Boolval Get the boolean value of a variable