Преобразование в булев тип в PHP

Доброе время суток участники образовательной IT площадки GeekSpace. Меня зовут Юрий Сиротенко и сегодня мы поговорим о преобразовании в булев тип

Также вы можете посмотреть видео урок "Переменные" в рамках нашего курса "Введение в PHP" перейдя по этой ссылке

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

$x = (bool) 1;

Стоит обратить внимание на то, что внутри скобок допускаются пробелы и символы табуляции, поэтому следующие примеры равносильны по своему действию

$x = (bool) 1;
$x = ( bool ) 1;

Как было сказано в предыдущих уроках, в PHP булев тип может обозначаться несколькими способами. Первый - это полный, обозначается как “boolean”, а второй сокращенный “bool”. Исходя из этого следующие примеры также равнозначны

$x = (boolean) 0;
$x = (bool) 0;

При преобразовании целочисленного значения “0” в логический тип данных, результатом будет false

$x = (bool) 0; // false

Аналогичное поведение будет при попытке преобразовать вещественное число ноль

$x = (bool) 0.0; // false

Если попытаться преобразовать пустую строку в булев тип, результатом будет ложь

$x = (bool) ‘’; // false

Такое же поведение будет в случае преобразования строки содержащей число 0

$x = (bool) ‘0’; // false

Особый тип “NULL”, про который мы поговорим в рамках других конспектов, при преобразовании в логический тип данных также вернет false

$x = (bool) null; // false

Все объекты над которыми производится попытка приведения к логическому типу данных вернут true

$date = new DateTime();
$res = (bool) $date; // true

Но есть одно исключение из правил. Давайте остановимся и рассмотрим его более подробно

SimpleXML

При попытке преобразовать экземпляр класса “SimpleXMLElement” у которого содержимое созданного xml элемента не имеет значений (или других элементов вложенных в него) результатом будет false

$element = new SimpleXMLElement(‘<data></data>’);
$res = (bool) $element; // false

В противном случае результат будет истинным

$element = new SimpleXMLElement(‘<data><item></item></data>’);
$res = (bool) $element; // true

$element = new SimpleXMLElement(‘<data>value</data>’);
$res = (bool) $element; // true

Происходит это потому, что SimpleXML имеет собственный обработчик приведения типов, который преобразует объекты из пустых тегов в false

Информация

Автор конспекта


Дата создания: 07.03.2019
Категория: PHP