2011-11-09 58 views
0

可能重複:
Is it possible to skip parameters that have default values in a php(5) function call?PHP使用默認參數調用函數,但在參數列表中間?

比方說這是我的函數:

function myFunc($a ,$b = 'ball',$c = 'cat') 
{ 
    echo "$a $b $c" ; 
} 



myFunc("apple"); // output : "apple ball cat" 
myFunc("apple","box"); // output : "apple box cat" 

我怎麼能說myFunc$b默認參數,例如

myFunc("apple", SOMETHING_HERE , "cow"); // output : "apple ball cow" 

回答

1

你不能這樣做,在函數的原型設定的默認值:

function myFunc($a ,$b = 'ball',$c) 
{ 
    echo "$a $b $c" ; 
} 

但有一種變通方法:

function myFunc($a ,$b = null,$c = null) 
{ 
    if ($b === null) 
     $b = 'ball'; 
    if ($c === null) 
     $c = 'cat'; 

    echo "$a $b $c" ; 
} 
+0

這是一個很好的解決方法。 – DhruvPathak

+0

哇,我討厭php有時。 – timh

0

您可以func_get_args功能和一些做特殊指示應使用默認值(例如,通過NULL):

function myFunc() { 
$params = func_get_args(); 
$defaults = array('apple', 'ball', 'cow'); //your default values 
foreach ($params as &key => &$value) { 
    if ($value === NULL) $value = $defaults[$key]; 
} 

myFunc('apple', NULL, 'cow'); 

話雖如此,我認爲這樣做並不是最佳做法。你應該再次看看你的功能設計 - 也許你只需要稍微重構一些東西,這樣會更直觀。