Подтвердить что ты не робот

Какая цель использования & перед аргументом функции?

Я видел некоторые объявления функций вроде этого:

function boo(&$var){
 ...
}

что делает символ &?

4b9b3361

Ответ 1

Это пропуск по ссылке. Переменная внутри функции "указывает" на те же данные, что и переменная из вызывающего контекста.

function foo(&$bar)
{
  $bar = 1;
}

$x = 0;
foo($x);
echo $x; // 1

Ответ 2

В основном, если вы меняете $var внутри функции, он изменяется на внешний. Например:

$var = 2;

function f1(&$param) {
    $param = 5;
}

echo $var; //outputs 2
f1($var);
echo $var; //outputs 5

Ответ 3

Он принимает ссылку на переменную в качестве параметра.

Это означает, что любые изменения, которые делает функция для параметра (например, $var = "Hi!"), будут влиять на переменную, переданную вызывающей функцией.

Ответ 4

Амперсанд (и) перед переопределением переменной (и $foo) проходит по значению, чтобы указать, что вы хотите передать переменную по ссылке вместо этого.

Например, если у вас есть это:

function doStuff($variable) {
     $variable++;
}

$foo = 1;

doStuff($foo);
echo $foo; 
// output is '1' because you passed the value, but it doesn't alter the original variable

doStuff( &$foo ); // this is deprecated and will throw notices in PHP 5.3+
echo $foo; 
// output is '2' because you passed the reference and php will alter the original variable.

Он работает в обоих направлениях.

function doStuff( &$variable) {
     $variable++;
}

$foo = 1;

doStuff($foo);
echo $foo; 
// output is '2' because the declaration of the function requires a reference.

Ответ 5

вы передаете $var в качестве ссылки, то есть фактическое значение переменной $var обновляется, когда оно изменяется внутри функции boo

Пример:

function boo(&$var) {
   $var = 10;
}

$var = 20;
echo $var; //gets 20
boo($var);
echo $var //gets 10

Ответ 6

перейти по ссылке.

Если вы знакомы с указателями C, это похоже на передачу указателя на переменную.

Кроме того, нет необходимости разыменовывать его (например, C).