Логические значения

Логический тип (bool) принимает только два значения, которые выражают истинность: true или false.

Синтаксис

Логические литералы — значения с типом bool — указывают константами true или false. Обе константы регистронезависимы.

<?php

$foo
= True; // Присвоить переменной $foo значение TRUE

var_dump($foo); // bool(true)

Логические условия часто проверяют в управляющих конструкциях. Внутри конструкций выполняют операции, результатом которых становятся значения с типом bool.

<?php

$action
= "show_version";
$show_separators = true;

// Оператор == проверит
// равенство и выражение вычислится как логическое значение
if ($action == "show_version") {
echo
"Версия 1.23";
}

// Сравнение логической переменной со значением true избыточно,...
if ($show_separators == TRUE) {
echo
"<hr>\n";
}

// ...поскольку проверка без сравнения даёт аналогичный результат:
if ($show_separators) {
echo
"<hr>\n";
}

Преобразование в логический тип

Оператор (bool) явно приводит значение к типу bool. В большей части сценариев ручное преобразование типа не потребуется, поскольку в логическом контексте значение автоматически интерпретируется как значение с типом bool. Дополнительную информацию о приведении типов даёт раздел «Жонглирование типами».

При преобразовании в тип bool следующие значения интерпретируются как false:

  • само значение boolean false
  • integer 0 (ноль)
  • float 0.0 (ноль) и -0.0 (минус ноль)
  • пустая строка "" и строка "0"
  • массив без элементов
  • особый тип NULL (включая неустановленные переменные)
  • внутренние объекты, которые перегружают своё поведение приведения к логическому типу. Например: объекты GMP, которые представляют значение 0.

Все остальные значения считаются true (включая resource и NAN).

Внимание

Число -1 PHP оценивает как логическое значение true, как и любое другое ненулевое — отрицательное или положительное — число!

Пример #1 Приведение к логическому типу

<?php

var_dump
((bool) ""); // bool(false)
var_dump((bool) "0"); // bool(false)
var_dump((bool) 1); // bool(true)
var_dump((bool) -2); // bool(true)
var_dump((bool) "foo"); // bool(true)
var_dump((bool) 2.3e5); // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array()); // bool(false)
var_dump((bool) "false"); // bool(true)