php的函数参数

时间:2011-04-22 06:15:28

标签: php

假设我定义了一个这样的函数:

   function   example(&node,$argument2,$argument3){
        ......
         }

我可以使用这种风格来调用函数。

1,example($node,$test1,$test2) //定义函数的第一个参数通过引用传递。但是调用函数不是。我可以用这个吗?

2,example(&node,$test1,$test2,$test3,) .//定义函数的参数是三,这里是四。我可以用吗?

5 个答案:

答案 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)

有一个名为func_get_args()的本机PHP函数。这里:

http://php.net/manual/en/function.func-get-args.php

这应该可以解决问题。

答案 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.'