2012-01-25 49 views
0

問題可能是令人困惑...PHP:動態調用函數重載用參數數組

在PHP array_merge()函數採用的參數無限量E.G.

array_merge($array1, $array2, $array3, $array4, $array5, $array6, $array7); 

但是如果我想從一個函數內調用它呢?

我有一個merge()函數可以被重載,並且我想在連接它們之前對它進行操作!

那麼array_merge如何調用,當我有一個數組中的數組參數?

public function index() { 

    $head = $this->_model->title("Index Page"); // returns array 

    $nav = $this->_model->navigation(); // returns array 

    $default = $this->_model->default_page(); // returns array 

    $data = $this->merge($head, $nav, $default); // merge all arrays 

    $this->loadView('view_admin', $data); 
} 

private function merge(){ 
    $args = func_get_args(); 

    // ... do stuff the the arrays ... 

    return array_merge($args[0],$args[1],$args[2]); 
} 

正如你可以看到,目前在我的合併功能:

return array_merge($args[0],$args[1],$args[2]); 

這是硬編碼

如何動態地調用array_merge()函數。 ???

可能像

array_merge(/* All Array args passed in */) 

回答

3
return call_user_func_array('array_merge', $args); 
1

你很可能call_user_func(http://php.net/manual/en/function.call-user-func.php) 爲:

return call_user_func("array_merge", $args);