2010-03-31 82 views
5

我構建了一個模板系統,並且正在運行中調用函數的問題。在call_user_func_array(...)中傳遞關聯數組(

當我嘗試以下方法:

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

你知道..一些數字元素一些關聯元素,

call_user_func_array($function, $args); 

數組轉換爲這樣的事情:

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

除了像這樣傳遞數組之外,還有什麼辦法可以解決這個問題:

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

謝謝! 馬特

+0

你可以在'$ function'中顯示'$ args'正在做什麼嗎? – 2010-03-31 13:10:12

+0

$函數只是一個像'to_lowercase'之類的字符串.. – Matt 2010-03-31 13:21:47

回答

15

有無處爲數組鍵去,因爲:

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()也可以採取多個參數 - 每個將被傳遞到被調用函數作爲參數。

+1

沒什麼可添加的。刪除我的,upvoting你的 – Gordon 2010-03-31 13:12:22

+0

真的嗎?我感到很傻 - 我知道我在決定使用call_user_func_array()之前嘗試過call_user_func(),我想我的需求一定會改變。如果我做func_get_args($ args)它會返回一個關聯數組的數組嗎? – Matt 2010-03-31 13:18:18

+0

是的,在上面的例子中func_get_args()==數組($ args) – 2010-03-31 13:21:18

相關問題