我正在构建一个模板系统,而且我遇到了动态调用函数的问题。
当我尝试以下操作时:
$args = array(
4,
'test' => 'hello',
'hi'
);
你知道......一些数字元素是一些关联元素,
call_user_func_array($function, $args);
将数组转换为如下所示:
$args = array(
4,
'hello',
'hi'
);
除了传递这样的数组之外,还有什么方法可以解决这个问题:
$args = array(
4,
array('test' => 'hello'),
'hi'
);
谢谢! 马特
答案 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()
也可以使用多个参数 - 每个参数都将作为参数传递给被调用的函数。