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

Mat*_*att 6 php templating

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

当我尝试以下内容时:

$args = array(
    4,
    'test' => 'hello',
    'hi'
);
Run Code Online (Sandbox Code Playgroud)

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

call_user_func_array($function, $args);
Run Code Online (Sandbox Code Playgroud)

将数组转换为如下所示:

$args = array(
    4,
    'hello',
    'hi'
);
Run Code Online (Sandbox Code Playgroud)

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

$args = array(
    4,
    array('test' => 'hello'),
    'hi'
);
Run Code Online (Sandbox Code Playgroud)

谢谢!马特

Tom*_*igh 15

阵列键无处可去,因为:

call_user_func_array($function, $args);
Run Code Online (Sandbox Code Playgroud)

相当于:

$function(4, 'hello', 'hi');
Run Code Online (Sandbox Code Playgroud)

你可以call_user_func()改用:

call_user_func($function, $args);
Run Code Online (Sandbox Code Playgroud)

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

function func($args) {
//    $args is complete associative array
}
Run Code Online (Sandbox Code Playgroud)

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