2011-02-03 45 views
2

是否有可能,在PHP中,將變量傳遞給函數是這樣的:

function myfunction($var1="bar", $var2="foo"){ 
echo $var1 . $var2; 
} 

myfunction($var2="bar"); 

,並得到下面的輸出:BARBAR?

問候 的Kristoffer

+0

號你可以這樣做! – 2011-02-03 23:00:06

回答

8

號,命名參數沒有在PHP支持。

另一種方法是傳遞參數的關聯數組,並對一組默認值進行比較/合併。笨重,但工程,並在一些庫和框架存在一個很常見的模式:

function myfunction($args = array()) { 
    $defaults = array('var1' => 'bar', 'var2' => 'foo'); 
    extract(array_merge($defaults, $args)); 
    echo $var1 . $var2; 
} 

myfunction(array('var2' => 'bar')); 
0

命名參數是在PHP not yet。有幾個解決方法來實現它。 JSON或數組傳遞是一個。但一些PHP內置函數使用此方法spurios默認值:

function yourfunction($var1=NULL, $var2=NULL) { 
    $var1 or $var1 = "bar"; 
    $var2 or $var2 = "foo"; 
    $var3 or $var3 = "jip"; 

    echo $var1 . $var2; 
} 

凡調用語法是:

yourfunction(null, "baz"); 

所以它的語義更基於索引的參數,未命名的。和訣竅是具有延遲執行在功能初始化代碼默認值(類似於很多類型檢查等)

更古怪選項(僅可用與標量)是JSON或URL參數:

yourfunction("var2=bar;var3=xyz"); 
yourfunction('{"var2":"bar"}'); // very debatable 
+0

如果函數接受'false',零,空白或NULL作爲參數,我不認爲短路語法會起作用。另外,是否有命名參數?我上次聽到(由團隊)一致決定反對它。 – BoltClock 2011-02-03 23:23:34

相關問題