Если у вас есть аргументы в виде массива, call_user_func_array
функция может вас заинтересовать .
Если количество аргументов, которые вы хотите передать, зависит от длины массива, это, вероятно, означает, что вы можете сами упаковать их в массив - и использовать его для второго параметра call_user_func_array
.
Элементы этого массива, которые вы передаете, будут затем получены вашей функцией как отдельные параметры.
Например, если у вас есть эта функция:
function test() {
var_dump(func_num_args());
var_dump(func_get_args());
}
Вы можете упаковать свои параметры в массив, например:
$params = array(
10,
'glop',
'test',
);
А затем вызовите функцию:
call_user_func_array('test', $params);
Этот код будет выводить:
int 3
array
0 => int 10
1 => string 'glop' (length=4)
2 => string 'test' (length=4)
т.е. 3 параметра; точно так же, как и функция вызывалась так:
test(10, 'glop', 'test');