将多个参数传递给匿名函数w / call_user_func

时间:2012-03-16 17:17:15

标签: php anonymous-function

我有一个参数数组,我希望通过call_user_func传递给函数。以下代码目前将给出错误:Missing argument 2 for Closure。如何重写才能正常工作?

$args = array('foo', 'bar');
call_user_func(function($arg1, $arg2) {}, $args);

3 个答案:

答案 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)

要么一个接一个地传递它们,要么让回调函数接受一个数组作为参数并在内部进行解析。