假设我定义了一个这样的函数:
function example(&node,$argument2,$argument3){
......
}
我可以使用这种风格来调用函数。
1,example($node,$test1,$test2)
//定义函数的第一个参数通过引用传递。但是调用函数不是。我可以用这个吗?
2,example(&node,$test1,$test2,$test3,)
.//定义函数的参数是三,这里是四。我可以用吗?
答案 0 :(得分:3)
1,
example($node,$test1,$test2);
这仍将通过引用传递第一个参数,因为函数定义表明了这一点。您不需要在此处使用任何特殊语法。
所以回答could I use it
- 是的。这就是你应该如何使用它。
2,
example($node,$test1,$test2,$test3)
我认为这是一个错字。第一个参数仍应记为$node
,而不是&node
。
它仍将作为参考传递而无需任何额外的语法。
然而,第四个参数($ test3)在原始函数中是未知的。它没有名称,因为你没有在你的func声明中定义第4个参数。在这种情况下,它只能用作:
$test3 = func_get_arg(3);
如果您想通过引用传递任何其他参数,然后,您可以使用特殊的pass-by-ref调用语法:
example($node, & $test1, & $test2);
这将在大多数设置中为您提供E_DEPRECATED警告。但它仍然可以按预期工作。
如果您希望覆盖默认情况下通过引用传递的函数,则只需要func( & $var )
语法。
答案 1 :(得分:1)
您应首先使用example($node,$test1,$test2)
按引用传递的调用时间。所以第二种方法会生成PHP警告信息。
修改强>
在SO PHP warning: Call-time pass-by-reference has been deprecated
上查看此问题答案 2 :(得分:1)
你可以用这个
example($node,$test1,$test2)
但不是第2点,因为参数的数量不匹配......你可以通过函数重载来实现
答案 3 :(得分:0)
答案 4 :(得分:0)
在PHP中你很难通过引用
example(&$node,$test1,$test2,$test3,)
function add_some_extra(&$string)
{
$string .= 'and something extra.';
}
$str = 'This is a string, ';
add_some_extra($str);
echo $str; // outputs 'This is a string, and something extra.'