最近我正在研究"通过参考传递",我开始了解以下方法
以下方法之间的主要区别是什么?
1.
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
Run Code Online (Sandbox Code Playgroud)
2.
function foo($var)
{
$var++;
}
$a=5;
foo(&$a);
Run Code Online (Sandbox Code Playgroud)
3.
function foo(&$var)
{
$var++;
}
function &bar()
{
$a = 5;
return $a;
}
foo(bar());
Run Code Online (Sandbox Code Playgroud)
即使它们都产生相同的结果,这是最好的工作方式.
谢谢.
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
Run Code Online (Sandbox Code Playgroud)
这接受一个始终通过引用传递的参数(&in in ).当通过时,它总是作为参考,所以递增函数内部的变量将导致参数进行修改.foo(&$var)$a
function foo($var)
{
$var++;
}
$a=5;
foo(&$a);
Run Code Online (Sandbox Code Playgroud)
不要使用它.这是调用时传递引用(您将函数传递&$a给$a函数),自PHP 5.3.0起不推荐使用.这是不好的做法,因为该功能不期望引用.
function foo(&$var)
{
$var++;
}
function &bar()
{
$a = 5;
return $a;
}
foo(bar());
Run Code Online (Sandbox Code Playgroud)
这将返回一个引用(&in in &bar())到$a函数中声明的变量bar().然后它引用返回值bar()并递增它.我不确定为什么这会有用,特别是对于原始/标量类型.