Атомная энергетика. Ядерные реакторы АЭС. Атомный флот. Ядерное оружие

РБМК-1000
Гражданский суда
Авиация

Высшая математика

Задачи
Практикум
Карта сайта

Присваивание

Вы уже знаете, как присвоить значение переменной в сценарии РНР. Тем не менее, некоторые тонкости, связанные с присваиванием, стоит выделить особо. Вероятно, вам хорошо знаком механизм присваивания по значению, при котором именованной переменной присваивается конкретное значение - например, целое число 1 или строка "ciao". Однако существует и второй механизм - присваивание по ссылке, также открывающее перед программистами немало полезных возможностей. В следующих разделах оба механизма рассматриваются более подробно.

Присваивание по значению

Это самый распространенный способ присваивания, при котором значение просто заносится в область памяти, представленную именем переменной. Примеры присваивания по значению:

$vehicle = "car";

$amount =10.23;

В результате выполнения этих двух команд по адресу памяти, представленному именем $vehicle, сохраняется строка "car", а по адресу, представленному именем $amount, - значение 10.23.

Присваивание по значению также может выполняться в результате выполнения команды return в функциях:

function simple () {

return 5;

}

$return_value = simple();

Функция simple( ) всего лишь возвращает значение 5, которое присваивается некоторой переменной. В данном примере значение 5 будет присвоено переменной $return_value.

Присваивание по ссылке

Другой способ заключается в присваивании переменной ссылки на область памяти, занимаемую другой переменной. Вместо конкретного значения переменная-приемник связывается с указателем (или ссылкой) на область памяти, поэтому фактическое копирование не выполняется.

Чтобы присвоить значение по ссылке, укажите перед именем переменной-источника символ & (амперсанд):

$dessert = "cake";

$dessert2 = $Sdessert;

$dessert2 = "cookies";

print "$dessert2 <br>"; // Выводится строка cookies

print Sdessert; // Снова выводится строка cookies

Как видно из приведенного фрагмента, после связывания переменной $dessert2 со ссылкой на область памяти, занимаемую переменной $dessert, любые изменения $dessert2 приводят к автоматической модификации $dessert (и всех остальных переменных, ссылающихся на эту же область памяти).

На главную