php:使用参数数组动态调用可重载函数

时间:2012-01-25 11:07:51

标签: php arrays merge

问题可能令人困惑......

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 */) 

2 个答案:

答案 0 :(得分:3)

return call_user_func_array('array_merge', $args);

答案 1 :(得分:1)

您可以使用call_user_func(http://php.net/manual/en/function.call-user-func.php) 为:

return call_user_func("array_merge", $args);