【问题标题】:default param php function [duplicate]默认参数php函数[重复]
【发布时间】:2013-06-11 12:15:12
【问题描述】:

我只想修改函数中的第二个默认参数,但我不知道如何

function test($a, $b = "b", $c = "c"){
    echo $a." ".$b." ".$c;
}

test("a");
test("a","z","e");
test("a","z");

我想使用这个函数来保持$b作为默认值并更改$c。 我试试

test("a",,"f");

但它不起作用。

【问题讨论】:

  • 你不能这样做......你必须再次传递 $b 默认值。默认参数的常见用途是将较少设置的变量设置在最右边,对于您的示例,这意味着 $a 将始终设置,$b 有时会设置,$c 将很少设置,依此类推

标签: php function


【解决方案1】:

这在现在的 PHP 中是不可能的。您必须手动传递默认值,例如:

test("a", "b", "f"):

有一个关于这个的 RFC:https://wiki.php.net/rfc/skipparams 但它还没有成功。

【讨论】:

  • 感谢您的回答
  • 有可能,我们可以使用 ReflectionFunction 找到函数的默认参数
  • @shin 这不是我解释这个问题的方式。我以为他想通过语言功能来做到这一点。
【解决方案2】:

你可以试试,

function test($a, $b = "b", $c = "c"){
    echo $a." ".$b." ".$c;
}

 function get_default_param($fn)
 {
 $function = new ReflectionFunction($fn);
 $default=array();

  foreach ($function->getParameters() as $param) {
  if ($param->isOptional()) {
    $default[]=$param->getDefaultValue() ;
}else{
 $default[]='';
}

}
return $default;
}


$default=get_default_param('test');//for getting all default parameters of 'test' as an array
test("a",$default[1],"f");

输出

 a b f

【讨论】:

  • 没错,是的,但是这样做太复杂了,我觉得无法将其用作简单的解决方法。
  • @bwoebi,一旦我们创建了get_default_param(),我们就可以轻松使用了。我不知道是否可以用简单的方法来完成
  • 这也是我的观点:没有简单的方法。而且这种方式会消耗很多性能(尽管我想不出更好的方式)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
  • 1970-01-01
  • 2014-02-10
  • 1970-01-01
  • 2012-06-14
相关资源
最近更新 更多