'&' перед именем параметра

Просто быстрый и без сомнения простой вопрос. Я новичок в PHP и просматриваю существующий код. Я пытался найти ответ на свой вопрос в Google, но безуспешно.

Может кто-нибудь, пожалуйста, дайте мне знать, что означает знак '&' перед параметром $ var ??

function setdefault(&$var, $default="")
{
  if (! isset($var))
  {
    $var = $default;
  }
}

Ответов (5)

Решение

Проходит по ссылке.

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

http://us.php.net/language.references.pass

& означает передачу по ссылке; этот код проверяет, действительно ли переменная, переданная функции, существует в глобальной области видимости. Без & него он сначала попытается получить копию переменной, что приведет к ошибке, если она не существует.

Это означает, что вы передаете переменную по ссылке http://ca3.php.net/language.references.pass . Просто это означает, что функция получает фактическую переменную, а не копию переменной. Любые изменения, внесенные вами в эту переменную в функции, будут отражены в вызывающей программе.

Это означает, что параметр передается по ссылке, а не по значению.

Это означает, что функция получает ссылку на исходное значение аргумента $var, а не на копию значения.

Пример:

function add(&$num) { $num++; }

$number = 0;
add($number);
echo $number; // this outputs "1"

Если add() бы в сигнатуре функции не было знака амперсанда, эхо-сигнал выдал бы «0», потому что исходное значение никогда не изменялось.