2012-03-16 178 views
7

我有一个参数数组,我想通过call_user_func传递给函数。以下代码目前会给出错误:Missing argument 2 for Closure。这怎么可以重写才能正常工作?将多个参数传递给匿名函数w/call_user_func

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

回答

15

尝试call_user_func_array()如果您正在寻找传递参数数组。

+1

比我的答案更好。 – 2012-03-16 17:20:21

+0

@KyleDecot最好的方式来感谢我接受一个答案,如果这对你有效:) – Crashspeeder 2012-03-16 18:11:32

0

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

1

知道这个答案。但是,以下也很好。

100000之间Exec的访问


1.006599:call_user_func($ FUNC,$值)

1.193323:call_user_func((阵列($对象,$ FUNC),$值)

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中,一个简单的数组集传递得很好,速度更快。