|
п имеет то или иное выра-
жение.
Чуть чаще возникает потребность узнать тип переменной (например, переданной в
параметрах функции) прямо во время выполнения программы.
В этой связи давайте посмотрим, какие же типы данных понимает PHP.
Типы переменных
PHP непосредственно поддерживает 5 типов переменных, которые я здесь перечислю
и коротко опишу.
integer
Целое число со знаком, обычно длиной 32 бита (от –2 147 483 648 до 2 147 483
647,
если это еще кому-то может быть интересно).
double
Вещественное число довольно большой точности (ее должно хватить для подавляю-
щего большинства математических вычислений).
string
Строка любой длины. В отличие от Си, строки могут содержать в себе также и
нуле-
вые символы, что никак не повлияет на программу. Иными словами, строки можно
использовать для хранения бинарных данных. Длина строки ограничена только раз-
мером свободой памяти, так что вполне реально прочитать в одну строку целый
"объ-
емистый" файл размером так килобайтов 200—300 (что часто и делается). Строка
легко может быть обработана при помощи стандартных функций, можно также непо-
средственно обратиться к любому ее символу.
array
Ассоциативный массив (или, как его часто называют, хэш, хотя для PHP такое
поня-
тие совсем не подходит). Это набор из нескольких элементов, каждый из которых
представляет собой пару вида ключ=>значение (символом => я обозначаю соответ-
Глава 7. Переменные, константы, выражения 119
ствие определенному ключу какого-то значения). Доступ к отдельным элементам
осуществляется указанием их ключа. В отличие от массивов Си, ключами здесь
могут
служить не только целые числа, начиная с нуля, но и любые строки. Например,
впол-
не возможно существование таких команд:
// создаст массив с ключами "0", "a", "b" и "c"
$a=array(0=>"zzzz", "a"=>"aaa", "b"=>"bbb", "c"="ccc");
echo $a["b"]; // auaaaao "bbb"
$a["1"]="qq"; // создаст новый элемент в массиве и присвоит ему "qq"
$a["a"]="new_aaa"; // присвоит существующему элементу "new_aaa";
Забегая вперед, скажу, что оператор array() создает массив, элементы которого
пе-
речислена в его скобках.
object
Объект, реализующий несколько наиболее простых принципов объектно-
ориентированного программирования. Внутренняя структура объекта похожа на хэш,
за исключением того, что для доступа к отдельным элементам и функциям использу-
ется оператор ->, а не квадратные скобки. Про объекты мы еще поговорим в буду-
щем, когда разберемся наконец с основами языка.
Логические переменные
Существует и еще один гипотетический тип переменных — логический. Логическая
переменная может содержать одно из двух значений: 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! "
if($a==true) echo "переменная истинна! "
Часть III. Основы языка PHP 120
?>
Если бы true была в точности равна константе 1, то вывелись бы обе строки, не
правда ли? А отображается только последняя. Это говорит о том, что не все так
про-
сто. Мы видим, что в операторах сравнения (например, в операторе сравнения на
ра-
венство ==, а также в операторах >, < и т. д.) PHP интерпретирует один из
операндов
как логический, если другой также логический. Следующий пример (листинг 7.2)
по-
казывает, что, вообще говоря, PHP хранит для каждой переменной признак,
явля
|
|