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

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

Синтаксис

Чтобы задать логический литерал bool, указывают константы true или false. Обе константы регистронезависимы.

<?php

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

?>

Часто результат выполнения оператора, который возвращает логическое значение bool, передаётся управляющей конструкции.

<?php

// «==» — оператор, который проверяет
// эквивалентность и возвращает логическое значение
if ($action == "show_version") {
echo
"Версия 1.23";
}

// это необязательно...
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 (включая неустановленные переменные)
  • внутренние объекты, которые перегружают своё поведение приведения к логическому типу. Например: объекты SimpleXML, созданные из пустых элементов без атрибутов.

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

Внимание

Число -1 рассматривается как true, как и любое другое ненулевое (отрицательное или положительное) число!

<?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)

?>