Анимация
JavaScript
|
Главная Библионтека глава 7 Переменные, константы, выражения Как вы, наверное, уже заметили, структура PHP-программы довольно сильно напоминает смесь Бейсика и Си, да еще со включениями на HTML. Что ж, так оно, в общем, и есть. Однако мы рассмотрели лишь очень простой пример программы на PHP, поэтому вряд ли сможем сейчас увидеть общую картину языка. А теперь настало время заняться конструкциями PHP вплотную. Начнем мы с основ языка. Итак... Переменные Как и в любом другом языке программирования (за исключением, может быть, языка Forth), в PHP существует такое понятие, как переменная. Даже в простом примере, какой был описан выше, мы использовали целых 3 переменных! При программировании на PHP принято не скупиться на объявление новых переменных, даже если можно обойтись и без них. Например, в том простом сценарии мы вполне могли бы использовать всего одну переменную - счетчик цикла. Однако значительно читабельнее будет определить их несколько штук. Отчасти это связано с тем, что создание нового идентификатора интерпретатору обходится довольно дешево, частично из-за того, что все переменные в функциях по умолчанию локальны (о локальных переменных разговор пойдет чуть позже). Имена переменных чувствительны к регистру букв: например, $my variable - не то же самое, что $My variable или $MY VARIABLE. Кроме того, имена всех переменных должны начинаться со знака $ - так интерпретатору значительно легче "понять" и отличить их, например, в строках. Поначалу это довольно сильно раздражает, но потом привыкаешь (и даже автоматически начинаешь писать "доллары" перед именами переменных в программах на Си, Паскале... ) В официальной документации сказано, что имя переменной может состоять не только из "английских" букв и цифр, но также и из любых символов, код которых старше 127, - в частности, и из "русских" букв! Однако я категорически не советую вам применять кириллицу в именах переменных - хотя бы из-за того, что в различных кодировках ее буквы имеют различные коды. Переменные в PHP - особые объекты, которые могут содержать в буквальном смысле все, что угодно. Если в программе что-то хранится, то оно всегда хранится в переменной (исключение - константа, которая, впрочем, может содержать только число или строку). Такого понятия, как указатель (как в Си), в языке не существует - при присваивании переменная копируется один-в-один, какую бы сложную структуру она ни имела. Тем не менее, в PHP версии 4 существует понятие ссылок - жестких и символических, их мы вскоре рассмотрим. Как уже говорилось, в PHP не нужно ни описывать переменные явно, ни указывать их тип. Интерпретатор все это делает сам. Однако иногда он может ошибаться (например, если в текстовой строке на самом деле задано десятичное число), поэтому изредка возникает необходимость явно указывать, какой же тип имеет то или иное выражение. Чуть чаще возникает потребность узнать тип переменной (например, переданной в параметрах функции) прямо во время выполнения программы. В этой связи давайте посмотрим, какие же типы данных понимает PHP. Типы переменных PHP непосредственно поддерживает 5 типов переменных, которые я здесь перечислю и коротко опишу. integer Целое число со знаком, обгчно длиной 32 бита (от -2 147 483 648 до 2 147 483 647, если это еще кому-то может быть интересно). double Вещественное число довольно большой точности (ее должно хватить для подавляющего большинства математических вычислений). string Строка любой длины. В отличие от Си, строки могут содержать в себе также и нулевые символы, что никак не повлияет на программу. Иными словами, строки можно использовать для хранения бинарных данных. Длина строки ограничена только размером свободой памяти, так что вполне реально прочитать в одну строку целый "объемистый" файл размером так килобайтов 200-300 (что часто и делается). Строка легко может быть обработана при помощи стандартных функций, можно также непосредственно обратиться к любому ее символу. array Ассоциативный массив (или, как его часто называют, хэш, хотя для PHP такое понятие совсем не подходит). Это набор из нескольких элементов, каждый из которых представляет собой пару вида ключ=>значение (символом => я обозначаю соответ- ствие определенному ключу какого-то значения). Доступ к отдельным элементам осуществляется указанием их ключа. В отличие от массивов Си, ключами здесь могут служить не только целые числа, начиная с нуля, но и любые строки. Например, вполне возможно существование таких команд: создаст массив с ключами "0", "a", "b" и "c" $a=array(0=>"zzzz", "a"=>"aaa", "b"=>"bbb", "c"="ccc"); echo $a["b"]; auaaaao "bbb" $a["1"]="qq"; создаст нов1Й элемент в массиве и присвоит ему "qq" $a["a"]="new aaa"; присвоит существующему элементу "new aaa"; Забегая вперед, скажу, что оператор array() создает массив, элементы которого перечислена в его скобках. object Объект, реализующий несколько наиболее простых принципов объектно-ориентированного программирования. Внутренняя структура объекта похожа на хэш, за исключением того, что для доступа к отдельным элементам и функциям используется оператор ->, а не квадратные скобки. Про объекты мы еще поговорим в будущем, когда разберемся наконец с основами языка. Логические переменные Существует и еще один гипотетический тип переменных - логический. Логическая переменная может содержать одно из двух значений: false (ложь) или true (истина). Любое ненулевое число (и непустая строка), а также ключевое слово true символизирует истину, тогда как 0, пустая строка и слово false - ложь. Таким образом, любое ненулевое выражение (в частности, значение переменной) рассматривается в логическом контексте как истина. Вы можете пользоваться константами false и true в зависимости от логики программы. Ключевые слова false и true - не совсем обычные константы. Раньше я говорил, что false является просто синонимом для пустой строки, а true - для единицы. Именно так они выглядят, если написать следующие операторы: echo false; в1водит пустую строку, т. е. ничего не в1водит echo true; в1водит 1 Теперь давайте рассмотрим такую программу (листинг 7.1). i Листинг 7.1. Логические величины <? $a=100; if($a==1) echo "переменная равна 1!<br>" if($a==true) echo "переменная истинна!<br>" 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [ 38 ] 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |