如何在PHP中传递变量参数列表

时间:2014-10-15 13:55:55

标签: php

我有一个总是这样调用的函数:

old_function(sprintf("Some arbitrary data %d, %s, %f\n", $i, $s, $f));

在PHP中是否可以创建一个将这些函数与

的函数组合在一起的函数
new_function("Some arbitrary data %d, %s, %f\n", $i, $s, $f);

在new_function的开头,函数的变量参数列表必须被解析并在内部传递给sprintf:

function new_function( /* variable argument list */ )
{
     $string = sprintf( /* variable argument list */ );
     return old_function($string);
}

是否可以在PHP中使用?

3 个答案:

答案 0 :(得分:3)

您可以使用func_get_args()& call_user_func_array()为此:

function new_function()
{
     // get all function arguments
     $args = func_get_args();
     // run the function "sprintf" with the given arguments
     $string = call_user_func_array("sprintf", $args);
     return old_function($string);
}

答案 1 :(得分:2)

从PHP 5.6起,您可以尝试通过...运算符使用Variadic Functions。此新功能支持将可变长度参数列表传递给任何函数的本机支持。

尝试这样的事情:

public function new_function(...$params) {
    $string = call_user_func_array("sprintf", $params);
    return old_function($string);
}

答案 2 :(得分:0)

请查看func_get_args()方法。哪个可以检索变长参数。