2011-08-14 244 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)); 
} 
相關問題