7

我正在构建一个模板系统,并且遇到了动态调用函数的问题。

当我尝试以下操作时:

$args = array(
    4,
    'test' => 'hello',
    'hi'
);

你知道..一些数字元素一些关联元素,

call_user_func_array($function, $args);

将数组转换为如下形式:

$args = array(
    4,
    'hello',
    'hi'
);

除了传递这样的数组之外,还有什么方法可以解决这个问题:

$args = array(
    4,
    array('test' => 'hello'),
    'hi'
);

谢谢!马特

4

1 回答 1

17

数组键无处可去,因为:

call_user_func_array($function, $args);

相当于:

$function(4, 'hello', 'hi');

您可以call_user_func()改用:

call_user_func($function, $args);

然后给定一个带有一个参数的函数,您可以获得关联数组:

function func($args) {
//    $args is complete associative array
}

请注意,call_user_func()也可以接受多个参数 - 每个参数都将作为参数传递给被调用函数。

于 2010-03-31T13:10:40.553 回答