PHP: Ссылки

Ссылка является специальным значением, которое ссылается непосредственно на область памяти, содержащую значение.

Ссылки позволяют создать две (и более) переменные указывающие на одно и тоже значение. Изменение значения в одной переменной отражается на другой переменной, и наоборот.

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

<?php
$x = 10;
$y = &$x;  // $y теперь ссылается на ту же область памяти, что и $x

$y = 20;
echo $x;   // 20
?>

Такой способ присвоения значений переменным называется присвоением по ссылке.

По ссылке допускается присваивать только переменные:

$num = 11;
$foo = &$num;     // Допустимо
$foo = &(4 * 9);  // Не допустимо

Если переменной, объявленной внутри функции как global, будет присвоена ссылка, то эта ссылка будет видна только внутри функции. Чтобы избежать этого, нужно использовать массив $GLOBALS:

<?php
$var1 = "Hello";
$var2 = "";

function foo($test) {
  global $var1, $var2;
  if (!$test) {
    $var2 = &$var1;            // Видна только внутри функции
    echo '$var2 внутри функции: ', "$var2
"; } else $GLOBALS["var2"] = &$var1; // Видна в глобальном контексте } foo(false); echo '$var2: ' . "$var2
"; // $var2: '' foo(true); echo '$var2: ' . "$var2
"; // $var2: 'Hello' ?>

На самом деле запись global $var; является сокращением от $var = &$GLOBALS['var'];, то есть фактически локальной переменной $var просто присваивается ссылка на значение одноимённой глобальной переменной.

Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011 – 2024 © puzzleweb.ru | razumnikum.ru

Реклама на сайте | puzinfo@puzzleweb.ru