True и False в PHP. В чем особенности логического типа данных?

true и false в php. в чем особенности логического типа данных?

Осмысление булевых значений

Булевыми или логическими значениями в PHP называют тип данных, призванный помочь программе распознавать два простейших состояния: «Правда» или «Ложь». В терминах языка программирования они определяются как true и false, соответственно. Логический тип очень важен, и в реальных условиях вы постоянно будете с ним сталкиваться.

Практический смысл логического типа откроется вам в полной мере при изучении условных операторов[1] и циклов[2]. Эти операторы целиком зависят от булевых значений, так как их выполнение или невыполнение строится на истинности получаемого аргумента.

Любой тип данных и любой результат операций между ними может быть приведен к логическому типу. Чтобы было проще понять это заявление, мы приведем несколько абстрактных утверждений:

  • Число 4 больше числа 2 = правда
  • Cтрока «Слово» состоит более, чем из десяти букв = ложь
  • К моему компьютеру подключена флешка = ложь
  • Такой электронный адрес уже зарегистрирован = правда

Заметка
Вы удивитесь, но большинство утверждений и состояний, которые можно придумать, характеризуются всего двумя словами true и false.

Создание логических переменных

Работа с булевым типом в PHP предельно проста. Чтобы определить переменную или элемент массива, как логическое значение необходимо использовать встроенные константы true или false.

//Определение логических переменных и вывод
//подробной информации о них в браузер
$isTheyHumans = true;
$humanParams = ['умен' => false, 'силен' => true];

var_dump($isTheyHumans);
//Результат: bool(true)

var_dump($humanParams);
/*
* Результат: array(2) {
*     ["умен"]=> bool(false)
*     ["силен"]=> bool(true)
* }
*/

Преобразование в true или false

Важно понимать, что PHP это слабо типизированный[3] язык программирования. В нем существует ряд операций, в которых значения могут автоматически преобразовываться в true или false. Ярким примером являются условные операторы. Вы также можете самостоятельно преобразовать переменную или результат выражения в логический тип, указав перед ним конструкцию (bool) или (boolean). Они абсолютно равнозначны.

В примере, приведенном ниже, присутствуют условные операторы. В коде указаны пояснения, но данные типы операций мы будем рассматривать более детально в следующих статьях. На этом этапе вы можете просто скопировать код и посмотреть, как он работает.

//Приведение строки к логическому типу данных
$fullString = (bool)"Не пустая строка";
var_dump($fullString);
//Результат: bool(true)

//Приведение результата вычисления к логическому типу
$firstInteger = 50;
$secondInteger = 146;
$result = (bool)($firstInteger + $secondInteger);
var_dump($result);
//Результат: bool(true)

//Если строка не пустая то выводим приветствие. В условном
//операторе строка неявно переводится в логическое значение
$myName = "Андрей";
if($myName) {
    echo "Добро пожаловать, $myName";
} else {
    echo "Доступ запрещен";
}
//Результат: Добро пожаловать, Андрей

Правила преобразований в булевы значения:

  • Целое число «0» будет равно false
  • Дробное число «0.0» будет равно false
  • Любое другое отрицательное и положительное число равно true
  • Пустая строка «» и строка «0» будут равны false
  • Строка, в которой есть хотя бы один символ отличный от «0» равна true
  • Пустой массив (без элементов) равен false
  • Массив с хотя бы одним элементом равен true
  • Пустой объект (без свойств) равен false
  • Объект хотя бы с одним свойством равен true
  • Специальное значение null равно false
  • Все остальные значения будут равны true
//Примеры преобразований различных типов
var_dump((bool)0); //bool(false)
var_dump((bool)0.0); //bool(false)
var_dump((bool)12); //bool(true)
var_dump((bool)""); //bool(false)
var_dump((bool)"test"); //bool(true)
var_dump((bool)[]); //bool(false)
var_dump((bool)["test"]); //bool(true)
var_dump((bool)null); //bool(false)

Термины, использованные в статье

  1. Условный оператор — конструкция языка программирования, которая позволяет выполнять различные участки кода, в зависимости от истинности переданного параметра или результата выражения. Если тип параметра или результата выражения не является логическим, то они будут приведены к нему неявным образом.
  2. Оператор цикла — конструкция языка программирования, которая позволяет многократно выполнять один и тот же участок кода. Зачастую выполнение цикла строится на утверждении, что какое-то значение истинно или ложно.
  3. Слабая типизация — этот термин имеет много трактовок и зачастую используется неуместно. В данной статье ему соответствует встроенный в язык программирования механизм «неявного преобразования типов».

Последние публикации