在call_user_func_array(...)中传递关联数组

时间:2010-03-31 13:08:17

标签: php templating

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

当我尝试以下操作时:

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

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

call_user_func_array($function, $args);

将数组转换为如下所示:

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

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

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

谢谢! 马特

1 个答案:

答案 0 :(得分:15)

数组键无处可去,因为:

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()也可以使用多个参数 - 每个参数都将作为参数传递给被调用的函数。