'&' перед именем параметра - PullRequest
       5

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

21 голосов
/ 28 февраля 2009

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

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

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

Ответы [ 5 ]

52 голосов
/ 28 февраля 2009

передает его по ссылке.

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

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

21 голосов
/ 28 февраля 2009

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

Пример:

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

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

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

3 голосов
/ 28 февраля 2009

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

3 голосов
/ 28 февраля 2009

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

2 голосов
/ 28 февраля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...