将参数从函数传递给另一个函数

时间:2011-08-14 00:42:41

标签: php function arguments

我有类似的东西

  function f1($name = ''){
    f2("prefix_{$name}", $args);
  }

调用f1()函数,如:

f1('name', $var1, $var2, $var3);

如何将这些变量传递给它内部的f2(),就像它们传递给f1()一样?

所以而不是f2("prefix_{$name}", $args);

应该像f2("prefix_{$name}", $var1, $var2, $var3);

并非我无法控制f2功能:(

2 个答案:

答案 0 :(得分:2)

function f1( $name = '' )
{
    // get all arguments to this function
    $args = func_get_args();
    // prefix the first arguments with some prefix
    $args[ 0 ] = 'prefix_' . $name;
    // call the second function with the $args array as its arguments
    call_user_func_array( 'f2', $args );
}

修改
取代

$args[ 0 ] = 'prefix_' . $args[ 0 ];

$args[ 0 ] = 'prefix_' . $name;

考虑Gerry said in his answer

答案 1 :(得分:1)

常规func_get_args()不会考虑任何默认参数,因此您需要执行以下操作:

function func_get_default_args($a) {
    $args = array_slice(func_get_args(), 1);
    return array_merge($args, array_slice($a, sizeof($args)));
}

function f1($name = ''){
    call_user_func_array('f2', func_get_default_args(func_get_args(), $name));
}