Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
默认参数php函数_Php_Function - Fatal编程技术网

默认参数php函数

默认参数php函数,php,function,Php,Function,我只想修改函数中的第二个默认参数,但我不知道如何修改 function test($a, $b = "b", $c = "c"){ echo $a." ".$b." ".$c; } test("a"); test("a","z","e"); test("a","z"); 例如,我想使用此函数,将$b保留为默认值,并更改$c。 我试着 但它不起作用。你可以试试 function test($a, $b = "b", $c = "c"){ echo $a." ".$b." ".$

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

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

test("a");
test("a","z","e");
test("a","z");
例如,我想使用此函数,将
$b
保留为默认值,并更改
$c
。 我试着

但它不起作用。

你可以试试

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

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

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

关于这一点,存在一个RFC:但它还没有取得任何成功。

你就是做不到。。。您必须再次传递$b默认值。默认参数的常用用法是将less set变量设置在最右边,例如,您的示例表示始终设置$a,有时设置$b,很少设置$c,因此您的答案是可能的,我们可以使用ReflectionFunction@shin我不是这样解释这个问题的。我以为他想通过语言功能来实现它。这是正确的,是的,但我觉得这样做太复杂了,无法作为一种简单的解决方法来使用。@bwoebi,一旦我们创建了get_default_param(),那么我们就可以轻松地使用它了。我不知道用简单的方法是否可行,这也是我的观点:没有简单的方法。而且这种方法需要花费大量的性能(尽管我想不出更好的方法)
test("a", "b", "f"):