2012-10-16 44 views
0

我是新來的PHP和Java和C編碼經驗。所以可選參數是有點令我困惑。我想知道如果一個函數有兩個可選參數,並且如果我傳遞一個參數,哪個參數將映射到參數?在php中的可選參數

回答

1

第一個參數總是傳遞給第一個變量的參數,第二至第二等在,無論它們是否是可選的。

可選參數和非可選參數之間唯一的區別是當調用中沒有足夠的參數來滿足所有非可選參數時會引發警告。

function f($a = 1, $b, $c, $d = 2) 
{ 
    var_dump($a, $b, $c, $d); 
} 
f('x'); 

功能$a內則是 「X」,$b$c$d將是2 但警告將被拋出

因此,將可選參數留給非可選參數是沒有意義的 - 雖然這在句法上是正確的 - 因爲在不產生警告的情況下,您無法將它們留在調用中。

5

參數順序從不改變(從左到右),所以如果只提供一個參數,第一個參數將接收該值,第二個參數將具有默認值。

例如:

function foo($a = 1, $b = 2) {} 

foo();  // $a = 1, $b = 2 
foo(3);  // $a = 3, $b = 2 
foo(4, 5); // $a = 4, $b = 5 

注意,有沒有辦法設置一個值$b,同時仍保留默認值$a,由於參數的順序。你將不得不調用foo()這樣來實現這一目標:

foo(1, 6); 
0

例如

function test($test = null, $test_2 = null, $test_3 = null) { 

} 

test(1) => $test=1; 
test(1,1) => $test=1;$test_2=1; 
test(1,1,1) => $test=1;$test_2=1;$test_3=1;