2011-02-15 67 views
8

在PHP中你將如何創建一個可以採取的參數無限數量的函數:myFunc($p1, $p2, $p3, $p4, $p5...);PHP函數的無限參數?

我的下一個問題是:你將如何將它們傳遞到另一個函數類似

function myFunc($params){ 
    anotherFunc($params); 
} 

anotherFunc會接收它們,就好像它是使用anotherFunc($p1, $p2, $p3, $p4, $p5...)

+1

http://php.net/manual/en/function.func-get-args.php最可能是你想要的。定義沒有參數的函數,並使用它來獲得在運行時傳遞的內容。 – morphles 2011-02-15 20:57:37

+0

[PHP的函數可以接受無限數量的參數嗎?]的可能的重複?(http://stackoverflow.com/questions/3078454/can-a-php-function-accept-an-unlimited-number-of-parameters) – JYelton 2011-02-15 21:04:57

回答

13
call_user_func_array('anotherFunc', func_get_args()); 

func_get_args返回包含傳遞到t所有參數數組稱爲他的功能被稱爲,並且call_user_func_array調用給定的函數,並傳遞給它一個參數數組。

+1

+1 func_get_args存在於您需要傳遞任意數量參數的情況。 – Endophage 2011-02-15 21:03:25

2

是否有一個原因,你不能使用1函數參數並將所有信息作爲數組傳遞?

4

以前,你應該使用func_get_args(),但在一個新的PHP 5.6currently in beta),你可以使用... operator而不是使用的。

因此,例如,你可以寫:

function myFunc(...$el){ 
    var_dump($el); 
} 

$el將有所有你會通過的元素。