PHP中的可选函数输入

时间:2009-12-14 00:05:46

标签: php user-defined-functions

我注意到在一些PHP内置函数(如str_replace)中有可选的输入变量。我可以在自己的函数中有可选的输入变量吗?如果是这样,怎么样?

谢谢, 布赖恩

3 个答案:

答案 0 :(得分:8)

第一种方法是对某些参数使用默认值:

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

现在你只需要包含一个默认值,然后有人可以这样做:

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

如果未指定字段,则需要选择适当的默认值,或者表示未设置任何值。典型示例包括''0falsenullarray()

或者您根本不需要使用func_get_args()指定它们:

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

func_get_args()也可以与显式参数(第一个示例)一起使用。

答案 1 :(得分: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

虽然这可能不是你想要的,但是知道并解决可选功能输入的问题仍然是好的。

答案 2 :(得分:0)

允许任意排序参数的附加选项:

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

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

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