【问题标题】:Pass associative arrays in call_user_func_array(...)在 call_user_func_array(...) 中传递关联数组
【发布时间】:2011-02-02 22:21:29
【问题描述】:

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

当我尝试以下操作时:

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

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

call_user_func_array($function, $args);

将数组转换成这样的:

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

除了传递这样的数组之外,还有其他方法吗:

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

谢谢! 马特

【问题讨论】:

  • 您能在$function 中显示$args 的操作吗?
  • $function 只是一个像 'to_lowercase' 之类的字符串..

标签: php templating


【解决方案1】:

数组键无处可去,因为:

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

【讨论】:

  • 哦,真的吗?我觉得很傻——我知道我在决定 call_user_func_array() 之前尝试了 call_user_func(),我想我的要求一定已经改变了。如果我执行 func_get_args($args) 会返回关联数组的数组吗?
  • 是的,上面例子中的 func_get_args() == array($args)
猜你喜欢
  • 2014-04-13
  • 2017-12-01
  • 2018-09-13
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 2013-03-21
  • 2011-08-12
  • 2010-10-11
相关资源
最近更新 更多