最近在研究“引用传递”,了解到以下几种方法
以下方法之间的主要区别是什么。
1.
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
2.
function foo($var)
{
$var++;
}
$a=5;
foo(&$a);
3.
function foo(&$var)
{
$var++;
}
function &bar()
{
$a = 5;
return $a;
}
foo(bar());
尽管它们都产生相同的结果,但这是最好的处理方式。
谢谢。
最佳答案
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
它接受一个总是通过引用传递的参数(&
在foo(<b>&$var</b>)
中)。当$a
被传递时,它始终作为引用,因此在函数内部递增变量将导致参数被修改。
function foo($var)
{
$var++;
}
$a=5;
foo(&$a);
不要使用它。这是调用时按引用传递(您将 &$a
传递给函数,对 $a
的引用),并且 弃用 自 PHP 5.3.0 起。这是一种不好的做法,因为该函数不期望引用。
function foo(&$var)
{
$var++;
}
function &bar()
{
$a = 5;
return $a;
}
foo(bar());
这将返回对变量 &
的引用(&bar()
在 $a
中)在函数中声明 bar()
.然后它引用 bar()
的返回值。并增加它。不过,我不确定为什么这会有用,尤其是对于原始/标量类型。
关于php - 以下陈述之间的主要区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3851013/