2012-06-03 36 views
3

我正在嘗試構建一個具有2個默認值的函數,但在某些場合我只需要提供第一個參數,而其他人只需要第二個參數。有沒有在PHP的方式,我可以做到這一點,或者有沒有辦法做我想要的,這被認爲是標準?建立默認變量的PHP函數?

function ex($a, $b = null, $c = null) { 
    .... 
} 

ex($a, $b, $c) // WORKS FINE 

ex($a) // WORKS FINE 

ex($a, $b) // WORKS FINE 

ex($a, $c) // WANT VAR C TO BE VAR C IN THE FUNCTION AND NOT VAR B 

由於

+2

但是,函數如何判斷'$ c'是否是第二個或第三個參數呢? –

+0

如果你想要關鍵字參數而不是位置參數,我建議你切換到Python。那麼你可以做'ex(a,c = c)' – ThiefMaster

回答

2

就這樣稱呼它:

ex($a, null, $c); 
1

你可以使用相關的陣列

考慮下面的代碼:

<?php 

function tryThis($parms) 
{ 
    $defaults = array(
     'a' => 5, 
     'b' => null, 
     'c' => 'Wibble'); 
    $parms = array_merge($defaults, $parms); 
    var_dump($parms); 
} 

// Use it as follows 

tryThis(array('a'=>7, 'c'=>'Hello')); 
tryThis(array('b'=>'Hi There')); 

?> 

它使一個把參數代入任意順序和允許的默認值任何參數。唯一的缺點是你必須通過關聯的數組訪問參數。