Существует и еще один гипотетический тип переменных— логический. Логическая переменная может содержать одно из двух значений: false (ложь) или true (истина). Любое ненулевое число (и непустая строка), а также ключевое слово true символизирует истину, тогда как 0, пустая строка и слово false — ложь. Таким образом, любое ненулевое выражение (в частности, значение переменной) рассматривается в логическом контексте как истина. Вы можете пользоваться константами false и true в зависимости от логики программы.
Ключевые слова false и true — не совсем обычные константы. Раньше я говорил, что false
является просто синонимом для пустой строки, а true — для единицы. Именно так они выглядят, если написать следующие операторы:
echo false; // âûâîäèò ïóñòóþ ñòðîêó, ò. å. íè÷åãî íå âûâîäèò
echo true; // âûâîäèò 1
Теперь давайте рассмотрим такую программу (листинг 7.1).
Листинг 7.1. Логические величины
<?
$a=100;
if($a==1) echo "ïåðåìåííàÿ ðàâíà 1!<br>"
if($a==true) echo "ïåðåìåííàÿ èñòèííà!<br>"
?>
Если бы true была в точности равна константе 1, то вывелись бы обе строки, не правда ли? А отображается только последняя. Это говорит о том, что не все так просто. Мы видим, что в операторах сравнения (например, в операторе сравнения на равенство ==, а также в операторах >, < и т. д.) PHP интерпретирует один из операндов как логический, если другой также логический. Следующий пример (листинг 7.2) показывает, что, вообще говоря, PHP хранит для каждой переменной признак, является ли она логической.