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

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

Синтаксис

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

<?php

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

?>

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

<?php

// == это оператор, который проверяет
// эквивалентность и возвращает boolean
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:

  • само значение booleanfalse
  • integer0 (ноль)
  • float0.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)

?>
To Top