2011-08-22 59 views
6

我怎麼會去約在PHP編寫一個函數與未知數量的參數,例如Php寫入一個未知參數的函數?

function echoData (parameter1, parameter2,) { 
    //do something 
} 

但是,當你調用該函數可以使用:

echoData('hello', 'hello2', 'hello3', 'hello'4); 

讓更多的參數由於參數的數量未知,因此被髮送。

+2

可能重複[PHP函數與無限數量的參數](http://stackoverflow.com/questions/1577383/php-function-with-limited-number-of-parameters)和[PHP函數可以接受無限數量的參數?](http://stackoverflow.com/questions/3078454/can-a-php-function-accept-an-unlimited-number-of-parameters) –

回答

11

func_get_args()

function echoData(){ 
    $args = func_get_args(); 
} 

要知道,當你可以做到這一點,你不應該在函數聲明定義任何參數,如果你打算使用func_get_args() - 僅僅是因爲它得到,如果非常混亂/當任何的定義的參數被省略

類似的功能有關的參數

  • func_get_arg()
  • func_get_args()
  • func_num_args()
+0

請注意,雖然你可以做到這一點,但你如果你打算使用'func_get_args()',就不應該在函數聲明中定義任何參數,因爲如果/當任何定義的參數被省略時,它變得非常混亂。 – DaveRandom

+0

@Dave:很好。我會將其添加到我的答案 – genesis

2

使用func_get_args()來檢索像所有的參數數組:

$args = func_get_args(); 

然後,您可以使用數組或迭代它,無論西裝你的用例最好。

0

您也可以使用數組:

<?php  
function example($args = array()) 
{ 
    if (isset ($args["arg1"])) 
     echo "Arg1!"; 
} 

example(array("arg1"=>"val", "arg2"=>"val")); 
8

只是對於那些誰發現這個線程在谷歌。

In PHP 5.6 and above you can use ...指定未知數量的參數:

function sum(...$numbers) { 
    $acc = 0; 
    foreach ($numbers as $n) { 
     $acc += $n; 
    } 
    return $acc; 
} 

echo sum(1, 2, 3, 4); // 10 

$numbers是參數數組。

相關問題