2011-08-14 247 views
1

我有这样的事情参数传递给另一个函数

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
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

常规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)); 
} 
相关问题