2009-12-14 90 views
2

我注意到,在一些諸如str_replace等函數構建的PHP中,有可選的輸入變量。我可以在自己的函數中有可選的輸入變量嗎?如果是這樣,怎麼樣?可選功能輸入PHP

感謝, 布賴恩

回答

8

第一種方式是使用默認值的一些參數:

function doStuff($required, $optional = '', $optional2 = '') { 
    ... 
} 

現在你只包括默認值,然後有人能做到:

doStuff('foo'); 
doStuff('foo', 1); 
doStuff('foo', 2, 3); 

如果未指定該字段或指示沒有設置值,則需要選擇適當的默認值。典型的例子是''0,false,nullarray()

或者你不需要用func_get_args()在所有指定它們:

function doStuff() { 
    print_r(func_get_args()); 
} 

func_get_args()可以明確的參數(第一個例子),以及使用。

+1

爲了擴大對,你給可選變量(其中克萊圖斯寫入空字符串「」)的分配是你想要什麼的默認值成爲。 – Roman 2009-12-14 00:09:12

1

另一種選擇,你可以做的是...

編輯

有點用處,現在的功能..

function getLongestString() { 

    $strings = func_get_args(); 

    $longestString = ''; 


    foreach($strings as $string) { 
     if (strlen($longestString) < strlen($string)) { 
      $longestString = (string) $string; 
     } 
    } 

    return $longestString; 

} 

然後你可以使用這樣的

echo getLongestString('hello', 'awesome'); // awesome 

雖然這可能不是你究竟想要什麼,知道並解決可選功能輸入的問題仍然很好。

0

一個附加選項,允許參數的任意排序:

function my_function($arguments) { 
    if($arguments['argument1']) { 
    // do something 
    } 

    if($arguments['argument2'] == 'LOLCAT') { 
    // do something else 
    } 
} 

my_function(array('argument1' => 1, 'argument2' => 'LOLCAT'));