php: динамически вызывать перегружаемую функцию с массивом аргументов - PullRequest
0 голосов
/ 25 января 2012

Вопрос может сбивать с толку ...

функция php array_merge() принимает неограниченное количество аргументов Е.Г.

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 ]

3 голосов
/ 25 января 2012
return call_user_func_array('array_merge', $args);
1 голос
/ 25 января 2012

Возможно, вы могли бы использовать call_user_func (http://php.net/manual/en/function.call-user-func.php) как:

return call_user_func("array_merge", $args);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...