2012-10-22 48 views
2

getAllForms($data=null)多個可選參數

getAllForms() and getAllForms("data") 

這將工作。但我想在這樣的函數中做兩個可選參數:

getAllForms($arg1=null,$arg2=null) 

getAllForms() and getAllForms("data") 

我該如何使這成爲可能。快速回復更值得讚賞。由於

+0

如果您想要有多個「數據」參數,請使用數組。否則將它們命名爲'$ data1'和'$ data2'。 –

+0

是的大安我使用數組data1和data2是數組。問題是我可以只設置一個arg可選(null) –

回答

8

您可以嘗試

function getAllForms() { 
    extract(func_get_args(), EXTR_PREFIX_ALL, "data"); 
} 

getAllForms(); 
getAllForms("a"); // $data_0 = a ; 
getAllForms("a", "b"); // $data_0 = a $data_1 = b ; 
getAllForms(nul, null, "c"); // $data_0 = null $data_1 = null, $data_2 = c ; 
2

試試這個:

getAllForms($data=null,$data2=null) 

,並調用它在此模式下:

getAllForms() 
getAllForms("data") 
getAllForms("data","data2") 

的第二個參數必須是不同的名字就第一

1

您已經描述瞭如何將做到這一點:

function getAllForms($arg1 = null, $arg2 = null) 

除了每個變量名(包括第二個)都必須不同。

6

您也可以嘗試使用func_get_arg,您可以將n個參數傳遞給函數。

http://php.net/manual/en/function.func-get-args.php

function foo(){ 
    $arg_list = func_get_args(); 
    for ($i = 0; $i < $numargs; $i++) { 
     echo "Argument $i is: " . $arg_list[$i] . "<br />\n"; 
    } 
} 

foo(1, 2, 3); 
1
<? php 
function getAllForms($data1 = null, $data2 = null) 
{ 
    if ($data1 != null) 
    { 
     // do something with $data1 
    } 

    if ($data2 != null) 
    { 
     // do something with $data2 
    } 
} 
?> 

getAllForms(); 
getAllForms("a"); 
getAllForms(null, "b"); 
getAllForms("a", "b"); 

<? php 
function getAllForms($data = null) 
{ 
    if (is_array($data)) 
    { 
     foreach($data as $item) 
     { 
      getAllForms($item); 
     } 
    } 
    else 
    { 
     if ($data != null) 
     { 
      // do something with data. 
     } 
    } 
} 

getAllForms(); 
getAllForms("a"); 
getAllForms(array("a")); 
getAllForms(array("a", "b")); 
?>