W3docs

boolval()

Функция PHP boolval() преобразует любое значение в boolean. Узнайте синтаксис, правила истинности и типичные ловушки.

Введение

Функция boolval() в PHP — это функция приведения типов, которая преобразует любое значение в его булев эквивалент — либо true, либо false. Появившись в PHP 5.5, она следует тем же правилам, которые PHP применяет везде, где значение интерпретируется как условие (например, внутри оператора if), и потому является ясным, явным способом ответить на вопрос: «является ли это значение истинным?».

boolval() делает ровно то же самое, что приведение (bool). Причина её существования в том, что, в отличие от приведения, функцию можно передавать в виде обратного вызова — например в array_map() — а языковую конструкцию вроде (bool) передать таким образом нельзя.

На этой странице рассматриваются синтаксис, правила преобразования для каждого типа, отличия boolval() от приведения (bool) и типичные подводные камни (в частности, строка "0").

Базовый синтаксис

Базовый синтаксис функции boolval() выглядит следующим образом:

Базовый синтаксис функции PHP boolval()

boolval(mixed $value): bool

Параметр $value — это значение, которое нужно преобразовать. Функция всегда возвращает boolean: true для любого истинного значения и false для любого ложного. Она не имеет побочных эффектов и никогда не генерирует исключений.

Какие значения являются ложными?

PHP считает ложными лишь фиксированный набор значений. Всё остальное — true. Запомнить этот короткий список — ключ к правильному использованию boolval():

  • само false
  • целое число 0 и число с плавающей точкой 0.0-0.0)
  • пустая строка "" и строка "0"
  • пустой array []
  • null
  • неустановленная / неопределённая переменная

Строка "0" — классическая ловушка: она непустая, однако PHP считает её ложной. Обратите внимание, что "0.0", " " (пробел) и "false" — всё это истинные строки.

Пример использования

Ниже приведён пример использования функции boolval() в PHP:

Пример использования PHP boolval()

php— editable, runs on the server

Здесь boolval() преобразует $var1 (ненулевое целое число) в true, а $var2 (ноль) в false. Мы оборачиваем результат в var_export(), чтобы boolean выводился как текст true / false — обычный echo выведет 1 для true и ничего для false, что затрудняет чтение результатов.

boolval() против приведения (bool)

При преобразовании отдельного значения boolval($x) и (bool) $x взаимозаменяемы и дают одинаковый результат:

<?php

$value = "0";

var_export(boolval($value));   // false
echo "\n";
var_export((bool) $value);     // false

Когда же следует выбирать boolval() вместо (bool)? Всякий раз, когда нужно передать преобразование как callable. Приведение — это языковая конструкция, а не функция, поэтому её нельзя передать в функции высшего порядка вроде array_map() или array_filter(). boolval — можно:

Фильтрация array до истинных значений

php— editable, runs on the server

Каждый элемент преобразуется в boolean. 1, "hello" и [1] становятся true; остальные — включая коварный "0" — становятся false.

Типичная ловушка: строка "0"

Поскольку boolval() воспроизводит правила истинности PHP, строка "0" даёт false. Это сбивает с толку код, валидирующий пользовательский ввод, так как поля форм всегда приходят в виде строк:

<?php

$input = "0"; // e.g. $_POST['quantity']

if (boolval($input)) {
    echo "treated as true\n";
} else {
    echo "treated as false\n"; // this branch runs
}

Если вам нужно именно «является ли эта строка непустой?», а не «является ли она истинной?», используйте явное сравнение с "" посредством строгой проверки ($input !== ""), а не boolval().

Рекомендации по использованию boolval()

Чтобы эффективно использовать функцию boolval() в PHP, важно придерживаться ряда рекомендаций:

Используйте строгие сравнения

При работе с функцией boolval() важно применять строгие сравнения (===) вместо нестрогих (==). Нестрогие сравнения могут приводить к непредсказуемому поведению.

Используйте подходящие типы переменных

При использовании функции boolval() важно убедиться, что преобразуемая переменная имеет подходящий тип. Подробнее о том, как различные типы данных преобразуются в boolean, см. в руководстве PHP по приведению типов.

Справочник по преобразованию типов

Понимание того, как различные типы PHP преобразуются в boolean, помогает избежать неожиданных результатов:

ТипПреобразуется в trueПреобразуется в false
stringНепустая строкаПустая строка ""
int / floatНенулевое значение0 или 0.0
arrayНепустой arrayПустой array []
nullНикогдаВсегда

Связанные функции

boolval() входит в семейство вспомогательных функций PHP для преобразования типов. Выбирайте ту, которая соответствует нужному типу:

  • intval() — преобразование значения в целое число.
  • floatval() — преобразование значения в число с плавающей точкой.
  • strval() — преобразование значения в string.
  • settype() — изменение типа переменной на месте.
  • gettype() / is_bool() — определение текущего типа переменной.

Для более широкого обзора того, как значения перемещаются между типами, см. раздел типы данных PHP.

Заключение

boolval() преобразует любое значение в boolean по стандартным правилам истинности PHP, возвращая false лишь для фиксированного короткого списка ложных значений (false, 0, 0.0, "", "0", [], null и неустановленных переменных) и true для всего остального. По поведению она полностью совпадает с приведением (bool), но имеет дополнительное преимущество: её можно передавать как обратный вызов в такие функции, как array_map(). Помните о подводном камне с "0" при валидации строкового ввода и предпочитайте строгие сравнения там, где нужен точный контроль.

Практика

Практика
Что делает функция boolval в PHP?
Что делает функция boolval в PHP?
Was this page helpful?