2011-04-22 111 views
1

如何我做一個函數的調用,我想用一些默認指定參數和一些部分我通過:PHP函數調用默認ARGS

function genericlist (array $arr, string $name, [string $attribs = null], 
      [string $key = 'value'], [string $text = 'text'], 
      [mixed $selected = NULL], [ $idtag = false], [ $translate = false]) 

我只是想通過在$ ARR,$名稱,$選擇並使用其他值的默認值,我該怎麼做?我知道我可以傳遞默認值並按順序進行,但我必須以另一種方式進行。謝謝。

回答

0

嗯,要麼確實傳遞默認值,要麼重新排序參數,以便在所有其他可選參數之前放入$選定參數。

此外,您可以在PHP開發論壇上請求命名參數。

+0

是啊,我覺得我得到的php混合了一些其他語言。我可能不會在PHP開發論壇中請求這個功能...... – milan 2011-04-25 22:26:43

+0

我知道關於默認值的傳遞,這是我最終做的,所以我將你的迴應標記爲正確的。謝謝。 – milan 2011-04-25 22:28:03

1

array_merge也許能夠給你一個解決方案,如果您有興趣使用數組路線:

function func1($args = array()) 
{ 
    $defaults = array('X' => 10, 'Y' => 30); 
    $args = array_merge($defaults, $args); 
    // $args now has default arguments and user supplied arguments 

    return $args; 
} 

func1(); // array('X' => 10, 'Y' => 30) 
func1(array('X' => 40)); // array('X' => 40, 'Y' => 30) 
+0

這可能適用,但比我需要的更復雜。我認爲有一個更好的方法,但我認爲我得到PHP混入了JavaScript或什麼的。無論如何,我只是打入默認值作爲參數。謝謝你的幫助。 – milan 2011-04-25 22:21:50

0

我看到兩個解決方案:

  1. 創建一個空參數的函數。當提供空值時,請在函數中檢查它並將其替換爲默認值。這是因爲它不再在原型中指定,而是以最小的努力提供默認值解決方案。
  2. 將您的原型轉換爲具有鍵值對的數組參數。這與第一種解決方案類似,但您可以使用諸如array_merge之類的方法組合「默認值」數組和新傳遞的參數值。

例1:

function abc($foo = null, $bar = null) 
{ 
    // defaulting parameters 
    if (is_null($foo)) $foo = 'Hello, world!'; // foo default value 
    if (is_null($bar)) $bar = 123.45; // bar default value 

    // on-ward with the function 
} 

// override bar, but not foo: 
abc(null, 987.65); 

例2:

function def($args) 
{ 
    // defaulting parameters 
    $args = array_merge(
    array(
     'foo' => 'Hello, world!', // Default foo value 
     'bar' => 123.45   // default bar value 
    ), 
    $args // override with supplied values 
); 

    // on-ward with the function 
} 

// override bar, but not foo 
def(array('bar'=>987.65)); 
+0

感謝您的回覆,但這比我需要更復雜。我認爲有更好的方法,但我認爲我得到PHP與JavaScript或其他語言混淆。無論如何,我只是打入默認值作爲參數。 – milan 2011-04-25 22:22:58