2010-03-31 52 views
5

我构建了一个模板系统,并且正在运行中调用函数的问题。在call_user_func_array(...)中传递关联数组(

当我尝试以下方法:

$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

你可以在'$ function'中显示'$ args'正在做什么吗? – 2010-03-31 13:10:12

+0

$函数只是一个像'to_lowercase'之类的字符串.. – Matt 2010-03-31 13:21:47

回答

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

+1

没什么可添加的。删除我的,upvoting你的 – Gordon 2010-03-31 13:12:22

+0

真的吗?我感到很傻 - 我知道我在决定使用call_user_func_array()之前尝试过call_user_func(),我想我的需求一定会改变。如果我做func_get_args($ args)它会返回一个关联数组的数组吗? – Matt 2010-03-31 13:18:18

+0

是的,在上面的例子中func_get_args()==数组($ args) – 2010-03-31 13:21:18

相关问题