Переменные в php
Текст, отображаемый до сих пор, был неизменным, например:
<?php echo "Привет от РНР"; ?>
Но РНР предназначен далеко не только и не столько для формирования статичного текста. Для того, чтобы обрабатывать различные данные, в языке предусмотрены переменные.
Переменные являются контейнерами для данных. Каждая переменная содержит определенное значение. Например, пусть требуется отобразить текущую температуру. В случае использования постоянных значений — констант — соответствующий код мог бы выглядеть следующим образом:
<?php echo "Температура сегодня: ", 36; ?>
При использовании переменной этот же код примет следующий вид:
<?php echo "Температура сегодня: ", $temperature; ?>
Переменные предназначены для хранения данных под определенным идентификатором — именем переменной. В РНР имена переменных начинаются со знака доллара («$»), далее следует буква или знак подчеркивания, после которого может следовать произвольное количество букв, цифр или знаков подчеркивания. После ее создания доступ к переменной возможен в произвольном месте скрипта. Самое время перейти к созданию переменных.
Создание переменных
Переменная создается тогда, когда ей присваивается какое-либо значение. Для присвоения значения переменной в РНР используется оператор присваивания. Наиболее часто употребительная форма оператора присваивания состоит из знака равенства (« = »). Ниже приведены примеры операторов присваивания, которые создают соответствующие переменные:
$temperature = 24; $number_of_earths = 1; $pi = 3.1415926535; $reassurance = "Без паники!"; $message = "Доброе утро!";
Обратите внимание, что одним переменным присвоены числа, а другим — строки. В других языках программирования переменные требуют явного описания с указанием их типа, но РНР — язык с нестрогой типизацией переменных, что упрощает программирование на нем.
Рассмотрим пример. В нем переменной $apples сперва присваивается значение 1, которое потом отображается:
$apples = 1; echo "Число яблок: ", $apples, "<BR>";
После этого значение переменной увеличивается на три, и результат снова отображается на экране:
$apples = $apples + 3; echo "Теперь число яблок: ", $apples, "<BR>"; <HTML> <HEAD> <TITLE>Присваивание значений переменным </TITLE> </HEAD> <BODY> <H1> Присваивание значений переменным </H1> <?php echo "Количество яблок устанавливается в 1.<BR>"; $apples = 1; echo "Число яблок: ", $apples, "<BR>"; echo "Добавляется 3 яблока.<BR>"; $apples = $apples + 3; echo "Теперь число яблок: ", $apples, "<BR>"; ?> </BODY> </HTML>
Результат выполнения этого примера приведен на рисунке. Как видно, присваивать значение переменным и изменять эти значения достаточно просто.
Интерполяция переменных в строках
Значение переменной может быть отображено, например, следующим способом:$apples = 1; echo "Число яблок: ", $apples, "<BR>";
Но существует способ сделать это проще. Если имя переменной заключено в двойные (не одинарные) кавычки, то переменная интерполируется. Это означает, что имя переменной заменяется ее значением, которое помещается на то же место в строке, где стояло имя переменной. Этот способ проиллюстрирован ниже:
$ арр1е s = 1; echo "Число яблок: $apples <BR>";
<HTML> <HEAD> <TITLE>Интерполяция переменных </TITLE> </HEAD> <BODY> <H1>Интерполяция переменных </H1> <?php echo "Количество яблок устанавливается в 1.<BR>"; $apples = 1; echo "Число яблок: $apples <BR>"; echo "Добавляется 3 яблока.<BR>"; $apples = $apples + 3; echo "Теперь число яблок: $apples <BR>"; ?> </BODY> </HTML>
Существует одна тонкость при использовании интерполяции переменных. Рассмотрим следующий пример:
<?php $text = "news"; echo "Where's the $textpaper <BR>"; ?>
Ожидается, что имя переменной $text будет заменено на ее значение. Но этого не происходит, вместо этого выдается сообщение об ошибке:
РНР Notice: Undefined variable: textpaper in C:\php\t.php on line 4
Это происходит потому, что РНР анализирует наличие имени переменной согласно синтаксическим правилам и всегда выделяет максимально возможное по длине имя. Для того, чтобы указать, какую именно переменную следует интерполировать в этом случае, следует использовать фигурные скобки, как показано в примере:
<HTML> <HEAD> <TITLE>Интерполяция переменных </TITLE> </HEAD> <BODY> <H1>Интерполяция переменных </H1> <?php $text = "news"; echo "Where's the {$text}paper"; ?> </BODY> </HTML>
Переменные, содержащие имена переменных
РНР позволяет размещать в переменных не только простые значения, но и имена других переменных. Пусть, например, создана переменная $apples:
<?php Sapples = 4; ?>
Далее создается переменная $fгuitname, которая содержит имя переменной Sapples:
<?php $apples = 4; $fruitname = "apples"; ?>
После этого к переменной $apples можно обратиться как $fruitname:
<?php $apples = 4; $fruitname = "apples"; echo "Число яблок: ", $fruitname; ?>
Для корректной интерполяции подобных переменных в строковых константах, заключенных в двойные кавычки, следует также использовать фигурные скобки, например: "{$fruitname}". Пример показывает использование этих приемов.
<HTML> <HEAD> <TITLE>Переменные, содержащие имена переменных </TITLE> </HEAD> <BODY> <H1>Переменные, содержащие имена переменных </H1> <?php $apples = 4; $oranges = 3; $fruitname = "oranges"; echo "Число апельсинов: ${$fruitname} <BR>"; $fruitname = "apples"; echo "Число яблок: ${$fruitname} <BR>"; ?> </BODY> </HTML>
Результат выполнения примера отображен на рисунке:
Если бы фигурные скобки отсутствовали, результат выполнения примера был бы следующим:
Число апельсинов: $oranges
Число яблок: $apples
Переменные, содержащие имена переменных, могут выглядеть курьезом, но на самом деле они могут быть очень полезны, что показано далее.
Автор: Стивен Хольцнер. Переводчик: С. Банников