开发者

Pass associative arrays in call_user_func_array(...)

I'm building a templating system and I'm running in to an issue with calling functions on the fly.

When I try the following:

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

You know.. some numerical elements some associative elements,

call_user_func_array($function, $args);

converts the array to something like this:

$args = array(
    4,
    'hello',
    'hi'
);
开发者_开发技巧

Is there any way around this other than passing an array like this:

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

Thanks! Matt


There's nowhere for the array keys to go because:

call_user_func_array($function, $args);

is equivalent to this:

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

You could use call_user_func() instead:

call_user_func($function, $args);

then given a function with one argument, you can get the associative array:

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

Note that call_user_func() can also take more than one argument - each will be passed to the called function as an argument.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜