我有一个参数数组,我希望通过call_user_func
传递给函数。以下代码目前将给出错误:Missing argument 2 for Closure
。如何重写才能正常工作?
$args = array('foo', 'bar');
call_user_func(function($arg1, $arg2) {}, $args);
答案 0 :(得分:15)
如果您要传递一系列参数,请尝试call_user_func_array()。
答案 1 :(得分:1)
知道这已经回答了。但是以下情况也可以。
执行100,000次访问
1.006599:call_user_func($ func,$ value)
1.193323:call_user_func((array($ object,$ func),$ value)
1.232891:call_user_func_array($ func,array($ value))
1.309725:call_user_func_array((array($ object,$ func),array($ value)
如果您需要使用 call_user_func :
call_user_func(
$function,
$arg1,$arg2
);
如果您需要使用 call_user_func_array :
call_user_func_array(
$function,
array($arg1,$arg2)
);
按设计,两者都可以传递数组。然而,同样通过设计,可能比另一个更需要使用。这一切都取决于它的用途。在call_user_func中,一个简单的数组集传递得非常好而且速度更快。
答案 2 :(得分:0)
要么一个接一个地传递它们,要么让回调函数接受一个数组作为参数并在内部进行解析。