2012-07-13 77 views
1

設的動態列表功能說我有功能:呼叫與瓦爾PHP

<?php 
function myFunction($param1, $param2, /*0 or more extra args*/) { 
    // do something with $param1 & $param2 
    $args = func_get_args(); 
    $other_args = array_slice($args, 2); // get the dynamic args 
    // do something with $other_args 
} 
?> 

這使來電:

<?php 
myFunction($param1, $param2); // or 
myFunction($param1, $param2, $param3); // or 
myFunction($param1, $param2, $param3, $param4); 
?> 

,但我想知道是否有可能採取一個數組args來,並將它們傳遞到的功能,例如:

<?php 
$extra_args = array($param3, $param4); // this could also be 
$extra_args = array($param3, $param4, $param5); // or any length array 
?> 

我想通過他們作爲獨立的PARAMS到我的功能,例如

<?php 
myFunction($param1, $param2 /* other args split up */); 
?> 

在此先感謝!

+0

你嘗試過什麼?你想用一系列參數調用你的函數? – 2012-07-13 18:18:18

+0

是的,這就是我想要做的 – Lizard 2012-07-13 18:20:12

+0

這個問題似乎很基本。是的,只要你構建了處理它的函數,就可以將一個數組的參數傳遞給函數。 – Jeremy 2012-07-13 18:21:14

回答

4

Yeap - call_user_func_array()'。

http://www.php.net/manual/en/function.call-user-func-array.php

採用兩個參數 - 的函數名(作爲一個字符串 - 或可能的話,在PHP> = 5.3,匿名函數,不能確定),而params的陣列。

或者爲方法,forward_static_call_array()

http://www.php.net/manual/en/function.forward-static-call-array.php

PHP的回答讓JS的function.prototype.apply() :)

+0

call_user_func_array可能會適用於我的場景 - 不能相信我沒有想到:)也不知道forward_static_call_array - 但不幸的是該函數是靜態的 - 儘管如此。 – Lizard 2012-07-13 18:25:23

1
call_user_func_array('myFunction', 
    array_merge(
     array($param1,$param2), 
     $extra_args));