是否有可能,在PHP中,將變量傳遞給函數是這樣的:
function myfunction($var1="bar", $var2="foo"){
echo $var1 . $var2;
}
myfunction($var2="bar");
,並得到下面的輸出:BARBAR?
問候 的Kristoffer
是否有可能,在PHP中,將變量傳遞給函數是這樣的:
function myfunction($var1="bar", $var2="foo"){
echo $var1 . $var2;
}
myfunction($var2="bar");
,並得到下面的輸出:BARBAR?
問候 的Kristoffer
號,命名參數沒有在PHP支持。
另一種方法是傳遞參數的關聯數組,並對一組默認值進行比較/合併。笨重,但工程,並在一些庫和框架存在一個很常見的模式:
function myfunction($args = array()) {
$defaults = array('var1' => 'bar', 'var2' => 'foo');
extract(array_merge($defaults, $args));
echo $var1 . $var2;
}
myfunction(array('var2' => 'bar'));
命名參數是在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
如果函數接受'false',零,空白或NULL作爲參數,我不認爲短路語法會起作用。另外,是否有命名參數?我上次聽到(由團隊)一致決定反對它。 – BoltClock 2011-02-03 23:23:34
號你可以這樣做! – 2011-02-03 23:00:06