Логічний (Booleans)

Це найпростіший тип. Логічний тип виражає правдивість значення, яке може бути або правдивим (true), або хибним (false).

Синтаксис

Щоб позначати логічний тип літерами, використовуються константи true та false. Обидві є регістро-нечутливими.

<?php
$foo
= True; // для змінної $foo встановлено значення TRUE
?>

Типово, результат від оператора повертається зі значенням логічного типа та передається до контролюючої структури.

<?php
// два підряд знаки дорівнює == вважаються оператором, який перевіряє
// рівність та повертає значення логічного типа
if ($action == "show_version") {
echo
"Це версія 1.23";
}

// такий вираз не є обов'язковим...
if ($show_separators == TRUE) {
echo
"<hr>\n";
}

// ...тому що вираз з таким же сенсом можна записати так:
if ($show_separators) {
echo
"<hr>\n";
}
?>

Конвертування до логічного типа

Щоб явно конвертувати значення до логічного типа, використовуйте приведення типа за допомогою запису (bool) чи (boolean). Хоча, в більшості випадків приведення типа необов'язкове, оскільки значення буде автоматично конвертоване, якщо оператор, функція чи контролююча структура вимагає логічний аргумент.

Прогляньте також Маніпуляції з типами.

При конвертації boolean, наступні значення сприймаються як хибні (false):

  • false тобто власне саме логічне хибне значення (boolean)
  • 0 тобто нуль цілочисельного типа (integer)
  • 0.0 тобто нуль дробного типа (float)
  • "" та "0" тобто пусте значення рядкового типа (string) та нуль як значення рядкового типа (string)
  • масив (array) без жодного елемента
  • об'єкт (object) без жодної властивості (тільки в PHP 4)
  • спеціальний тип NULL (включаючи зруйновані змінні, що можна отримати, наприклад, через unset() )
  • об'єкт SimpleXML створений з пустого тега

Будь-яке інше значення сприймається як правдиве (true) (включаючи тип ресурс).

Увага

-1 сприймається як правдиве значення (true), як і будь-яке інше (від'ємне чи додатнє) ненульове число!

<?php
var_dump
((bool) ""); // 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)
?>