我需要在Kohana的Jelly系列中递归回复评论及其各自的孩子。我想知道如何通过引用将变量传递给函数。我认为它会是这样的:
function recursive(&$array)
{
recursive(&$array);
}
但我不太确定。这是正确的还是当我调用函数时我不需要&符号吗?
感谢。
答案 0 :(得分:10)
调用函数时不需要&符号,因为您已经使用&符号声明它接受引用作为参数。
所以你要写下这个:
function recursive(&$array)
{
recursive($array);
}
在旁注中,通常应避免将&符号添加到函数调用。这称为呼叫时间传递引用。它是错误因为函数可能期望通过值传递参数,但是你传递了一个引用,所以你在不知道的情况下搞砸了函数。正如我上面所说的,如果你声明它,那么函数将总是通过引用获取参数。因此,不需要调用时间传递引用。
在PHP 5.3.0及更新版本中,call-time pass-by-reference导致PHP发出E_DEPRECATED
警告,因为它已被弃用(理所当然)。