Основы программирования на РНР - создание ссылок на переменные. Концепция ссылок в РНР существенна для представления разработчикам возможностей ссылаться на данные, содержащиеся в переменной, по одному или более именам переменных. Это значит нечто большее, чем просто то, что две переменные имеют одно и то же значение (например, и $а, и $Ь равны 5).
Когда одна переменная ссылается на другую, любые изменения, выполненные для одной из них, изменяют значение другой, на которую ссылается первая переменная.
В РНР ссылки создаются добавлением префикса в виде амперсанта & к имени переменной или функции. Рассмотрим пример, представленный в листинге 1.27.
Листинг 1.27. Использование ссылок в РНР
$myvar = 42; /* Инициализация $myvar */ $myref = &$myvar; /* Создается ссылка $myref на $myvar */ echo "Значение \$rayref равно '$myref "; echo "Значение \$myvar равно '$myvar' "; $myvar++; echo "Значение \$myref равно '$myref "; echo "Значение \$myvar равно '$myvar' "; $myref--; echo "Значение \$myref равно '$myref ", echo "Значение \$myvar равно '$myvar' ", ?>
После выполнения этого сценария получается следующий вывод:
Значение $myref равно '42'
Значение $myvar равно '42' •
Значение $myref равно '43'
Значение $myvar равно '43'
Значение $myref равно '42'
Значение $myvar равно '42'
Как видите, переменные $myvar и $rayref являются ссылками/псевдонимами для одного и того же элемента данных, и любые изменения одной из них приводят к изменению другой.
НА ЗАМЕТКУ
Поскольку обе переменные — и $myvar, и $myref — представляют одни и те же данные, то если вы разрушите любую из них с помощью PHP-функции unset (), данные не будут потеряны. Оставшаяся переменная будет по-прежнему ссылаться на те же данные. И это справедливо независимо от того, сколько ссылок на одну переменную будут разрушено. До тех пор, пока хотя бы одна из переменных ссылается на элемент данных, он остается доступным в сценарии через эту переменную.
|