PHP: Булев (boolean) - логический тип

В этой главе:

  • Синтаксис
  • Преобразование в булев тип

Булев тип - простейший тип данных, выражающий истинность, он представляет два логических значения: "истина" и "ложь". Эти логические значения обозначаются в PHP зарезервированными словами true и false соответственно. Следовательно, переменная или выражение булева типа будет принимать одно из этих логических значений.

При выполнении арифметических операций над логической переменной она превращается в переменную с числовым типом данных. А именно, false будет рассматриваться как 0, а true - как 1. Если вы захотите вывести логическое значение на экран, в этом случае true будет преобразовано в 1, а false в 0 (false (0) не выводится на экране).

1
2
3
4
5
6
7
<?php
 
  $a = true;
  echo $a;
  echo true;
 
?>

Синтаксис

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

1
2
3
4
5
<?php
 
  $fy = true; // присвоить $fy значение TRUE
 
?>

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
 
  // == это оператор, который проверяет
  // эквивалентность и возвращает булево значение
  if ($action == "show_version") {
    echo "The version is 1.23";
  }
 
  // это необязательно...
  if ($show_separators == TRUE) {
    echo "<hr>\n";
  }
 
  // ... потому что следующее имеет тот же самый смысл:
  if ($show_separators) {
    echo "<hr>\n";
  }
 
?>

Преобразование в булев тип

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

При преобразовании в логический тип, следующие значения рассматриваются как FALSE:

  • само булево значение FALSE
  • integer 0 (ноль)
  • float 0.0 (ноль)
  • пустая строка, и строка "0"
  • массив без элементов
  • особый тип NULL (включая неустановленные переменные)
  • Объекты SimpleXML, созданные из пустых тегов

Все остальные значения рассматриваются как TRUE (включая любой resource).

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

Чтобы выполнить явное приведение типа, нужно поместить перед операндом (это может быть значение, переменная и т.д.) оператор приведения типа, как показано в примере ниже:

1
2
3
4
5
6
7
8
9
10
11
12
<?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((boolean) 2.3e5);     // bool(true)
  var_dump((boolean) array(12)); // bool(true)
  var_dump((boolean) array());   // bool(false)
  var_dump((boolean) "false");   // bool(true)
 
?>