2012-03-16 180 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中,一個簡單的數組集傳遞得很好,速度更快。