<?pbp
$а = "Hello"; $b = "$а World!"; $а = "Goodbye";
echo($b); ?>
выводится по-прежнему Hello поскольку подстановка переменной
происходит в том месте, где литерал переводится в строку и записывается в переменную $Ь. Последующее изменение $а не оказывает влияния на $ь.
Ссылки
PHP предоставляет и другой способ ссылки на переменные. Ссылка на переменную вида:
${expression}
указывает на переменную, имя которой представляет собой результат вычисления выражения. Поэтому если выражение является строковым литералом, например, таким:
${"my„пате"}
то переменной, на которую происходит ссылка, будет $my_name. Если переменная $а содержала строку "name", то
${"шу_$а">
также будет указывать на переменную $my_name - строка, как и прежде, переводится в строку "my_name", которая и используется для ссылки на переменную. Теперь, если переменная $а содержит "my_name", то
${$а}
также указывает на $my_name. Однако для таких случаев РНР допускает еще более краткий синтаксис. Если имя переменной просто содержится в другой переменной, как здесь, то ссылка на переменную $my_name будет выглядеть так:
$$а
Такие подстановки действуют всюду, где требуется ссылка на переменную, в том числе в левой части операторов присваивания и в строках, заключенных в двойные кавычки.
Константы
Константы представляют собой контейнеры для данных, как и переменные, но после присваивания константе значения его уже нельзя изменить. Константы определяются в РНР не таким способом, как переменные (в некоторых языках константы определяются так же, как переменные, но с ключевым словом, определяющим их как константы). Константы создаются в РНР с помощью функции define():
define("INDEPENDENCEDAY". "4th July"); В теле кода на константу можно сослаться просто по имени:
echo(INDEPENDENCEDAY);
Принято записывать имена констант буквами верхнего регистра, но это лишь традиция, и можно выбирать любые имена, отвечающие правилам именования
Константы РНР фактически действуют так же, как директива #defines в препроцессоре С: можно определить их в некотором а затем выпол
нять разный код в зависимости от того, определена ли константа и какое значение она имеет. Проверка выполняется с помощью функции
if (defined("INDEPENDENCEDAY")) {
echo("INDEPENDENCEDAY is defined"); } else {
echo("INDEPENDENCEDAY is not defined");