3

我想定义一个doSomething(arg1, arg2)默认值为 arg1=val 和 arg2=val的函数

当我写

function doSomething($arg1="value1", $arg2="value2"){
 // do something
}

现在是否可以使用默认 arg1 和 arg2="new_value2" 调用 doSomething

4

4 回答 4

8

有时,如果我有很多带有默认值的参数,我会使用一个数组来包含参数并将其与默认值合并。

public function doSomething($requiredArg, $optional = array())
{
   $defaults = array(
      'arg1' => 'default',
      'arg2' -> 'default'
   );

   $options = array_merge($defaults, $optional);
}

但是,只有当您有很多争论时,它才真正有意义。

于 2010-05-13T19:50:36.707 回答
5

不,可悲的是,这是不可能的。如果你定义$arg2,你也需要定义$arg1

于 2010-05-13T19:09:55.997 回答
3
function doSomething( $arg1, $arg2 ) {
  if( $arg1 === NULL ) $arg1 = "value1";
  if( $arg2 === NULL ) $arg2 = "value2";
  ...
}

并致电:

doSomething();
doSomething(NULL, "notDefault");
于 2010-05-13T19:10:42.813 回答
2

您是否曾经分配过 arg1 但没有分配过 arg2?如果没有,那么我会切换顺序。

于 2010-05-13T19:38:58.963 回答