Переменные в сценарии
Сценарий, приведенный в предыдущем разделе, отображает на Web-странице приветствие, используя простую инструкцию echo. В этом разделе мы тоже создадим сценарий, отображающий приветствие, но с использованием переменной. Ранее для вывода приветствия мы использовали следующий фрагмент кода на РНР:
‹?php echo "<р>3дравствуй, мир! </р>"; ?›
|
Приведем полный текст сценария, содержащий раздел РНР с переменной и отображающий приветствие "Здравствуй, мир!":
<html> <head> <title>Сценарий с использованием переменной</title>/head> <body> ‹?php $salutation = "Здравствуй, мир!"; echo "<p> $salutation </p>"; ?› </body> </html>
|
Если этот сценарий загрузить в браузер, на Web-странице отобразится приветствие Здравствуй, мир!
Переменная сохраняет свое значение в процессе выполнения всего сценария, а не только в отдельном РНР-разделе. Если переменной присвоить значение 5 в начале сценария, то и в конце сценария значение этой переменной будет равно 5 (если, конечно, вы не присвоите ей нового значения). Например, следующий сценарий содержит два отдельных РНР раздела: <html> <head><title>Сценарий с использованием переменной</title></head> <body> ‹?php $salutation = "Здравствуй, мир!"; echo "<p> $salutation </p>"; ?› <р>Это раздел HTML</p> ‹?php echo "<p>$salutation еще раз</р>"; ?› </body> </html>
|
Если URL-адрес этого сценария указать в браузере, то на Web-странице отобразится следующая информация:
Здравствуй, мир! Это раздел HTML Здравствуй, мир! еще раз
Более подробно об операторах выводаКак упоминалось в предыдущих разделах, оператор echo имеет следующий формат: echo элемент_вывода1, элемент_вывода2, элемент_выводаЗ, ..... Вместо любого элемента вывода можно использовать переменную. Например, можно создать такой РНР-раздел:
‹?php $first_name = "Кларк"; $last_name = "Кент"; echo "Меня зовут ",$first_name," ",$last_name; ?›
|
Приведем результат выполнения кода этого раздела: Меня зовут Кларк Кент Обратите внимание на пробел между переменными $first_name и $last_name. Если не добавить этот пробел, эти две переменные будут выводиться слитно: Меня зовут КларкКент
Для получения желаемого вывода операторы, содержащие несколько переменных, должны удовлетворять определенным правилам форматирования. В таблице ниже показаны некоторые операторы echo, которые содержат переменные, а также результаты их использования. В таблице в операторах echo используются следующие значения переменных:
$number = 123; $word1 = "Здравствуй,"; $word2 = "мир!";
Обратите внимание, что во второй строке таблицы между двумя переменными отсутствует пробел, поэтому нет никакого пробела и при выводе. В третьей строке между значениями переменных отображается пробел.
Оператор echo
| Результат вывода
| echo $number;
| 123
| echo $word1, $word2;
| Здравствуй,мир!
| echo $word1," ",$word2;
| Здравствуй, мир!
| echo $word1 $word2;
| Неверно, потому что имена переменных не отделены друг от друга запятыми. Это приведет к генерации сообщения об ошибке
| echo "$wordl $word2 снова";
| Здравствуй, мир ! снова
|
В некоторых операторах echo интерпретатор РНР не может отделить имя переменной, если сразу за ним следует текст. В подобных случаях имя переменной необходимо заключать в фигурные скобки. Например, предположим, что в сценарии используются следующие строки:
$type = "bird"; echo "Keep the $typecage clean";
Вместо желаемого результата будет получено следующее сообщение: Notice: Undefined variable: typecage in testvar.php on line 6 После уведомления о проблеме будет выведен такой текст: Keep the clean Для того чтобы этот код работал правильно, необходимо использовать оператор echo следующего формата:
echo "Keep the {$type}cage clean"; тогда будет получен следующий результат: Keep the birdcage clean
Использование переменных переменныхРНР позволяет использовать динамические имена переменных, получившие название переменных переменных. Переменную можно описать, используя значение, сохраненное в другой переменной, т.е. одна переменная может содержать имя другой переменной. Предположим, например, что вы хотите создать переменную $city с значением Лос-Анджелес. Для этого можно использовать следующий синтаксис:
$name_of_the_variable = "city"; В этой строке создается переменная, содержащая имя, которое можно назначить другой переменной. Для этого необходимо использовать операторы:
$$name_of_the_variable = "Лос-Анджелес"; Обратите внимание на дополнительный символ доллара в начале имени переменной. Это и есть обозначение переменной переменной. Этот оператор создает новую переменную, именем которой является значение, содержащееся в переменной $name_of _the_variable:
$city = "Лос Анджелес"; Значение переменной $name_of_the_variable при этом не изменится. Следующий пример иллюстрирует особенности работы с такими переменными. Операторы приведенного сценария вряд ли окажутся очень полезными, поскольку можно придумать лучший вариант решения данной задачи. Истинное преимущество переменных переменных становится понятным, когда они используются с массивами и циклами. Эти вопросы обсуждаются в следующих разделах.
Предположим, необходимо создать несколько переменных, имена которых совпадают с названиями городов, а их значениями является количество людей, населяющих соответствующий город. Для этого можно использовать такой код:
$Reno = 360000; $Pasadena = 138000; $cityname = "Reno"; echo "Население $cityname - ${$cityname}"; $cityname = "Pasadena"; echo "Население $cityname - ${$cityname}";
Результатом выполнения этого кода является следующий текст: Население Reno - 360000 Население Pasadena - 138000
Обратите внимание, что в операторе echo имена переменных необходимо заключать в фигурные скобки. Без использования фигурных скобок вы получите совсем другой результат.
Удаление переменныхУдалить информацию из переменной можно с помощью оператора: $age = __; Этот оператор удаляет значение переменной $age. Причем это не означает, что теперь переменная $age установлена в значение 0. Это лишь значит, что переменная $age не содержит никакой информации. Технически это означает, что значением $аде является строка нулевых символов. Если вы попытаетесь вывести значение $age на экран с помощью инструкции echo, то на экран ничего не выведется. (Сообщение об ошибке при этом тоже не выводится.)
Переменную можно удалить и следующим образом: unset($age); После выполнения этого оператора переменная $age больше не будет существовать. Если вы попробуете вывести ее с помощью оператора echo, то получите сообщение об ошибке "undefined variable" (неопределенная переменная). Таким образом, можно одновременно удалить несколько переменных:
unset($age, $name, $address);
|