我看到了一些像这样的函数声明:
function boo(&$var){
...
}
&
字符有什么作用?
答案 0 :(得分:47)
这是一个参考传递。函数内部的变量“指向”与调用上下文中的变量相同的数据。
function foo(&$bar)
{
$bar = 1;
}
$x = 0;
foo($x);
echo $x; // 1
答案 1 :(得分:20)
基本上,如果您在函数内部更改$var
,则会在外部进行更改。例如:
$var = 2;
function f1(&$param) {
$param = 5;
}
echo $var; //outputs 2
f1($var);
echo $var; //outputs 5
答案 2 :(得分:6)
它接受对变量的引用作为参数。
这意味着函数对参数所做的任何更改(例如$var = "Hi!"
)都会影响调用函数传递的变量。
答案 3 :(得分:2)
答案 4 :(得分:2)
你传递$ var作为参考,这意味着$ var的实际值在boo函数中被修改时会被更新
示例:
function boo(&$var) {
$var = 10;
}
$var = 20;
echo $var; //gets 20
boo($var);
echo $var //gets 10
答案 5 :(得分:1)
变量(& $ 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.
答案 6 :(得分:-1)
如果任何函数以&符号(&)开头,则表示它通过Reference函数调用。它将返回对变量的引用而不是值。
function reference_function( &$total ){
$extra = $total + 10;
}
$total = 200;
reference_function($total) ;
echo $total; //OutPut 210