在函数参数之前使用&的目的是什么?

Ale*_*lex 29 php variables reference function

我看到了一些像这样的函数声明:

function boo(&$var){
 ...
}
Run Code Online (Sandbox Code Playgroud)

这个&角色做了什么?

Mat*_*hew 50

这是一个参考传递.函数内部的变量"指向"与调用上下文中的变量相同的数据.

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

$x = 0;
foo($x);
echo $x; // 1
Run Code Online (Sandbox Code Playgroud)

  • @Alex,有点真实,但有两个很大的区别:1)它适用于非全局范围(调用其他函数的函数)和2)它不依赖于知道变量名称的内部函数.作为函数参数的引用比全局变量更容易调试并且更不容易出错,尽管某些相同的问题(例如,对变量的意外更改)仍然适用. (5认同)
  • 所以它的行为类似于使用`global $ var`时的行为 (2认同)

cam*_*aca 20

基本上,如果你$var在功能内部进行更改,它会在外部进行更改.例如:

$var = 2;

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

echo $var; //outputs 2
f1($var);
echo $var; //outputs 5
Run Code Online (Sandbox Code Playgroud)


SLa*_*aks 6

它接受对变量的引用作为参数.

这意味着函数对参数所做的任何更改(例如$var = "Hi!")都会影响调用函数传递的变量.