php函数中,多个参数的情况下怎么使其中一个参数为默认值而其他的使用指定值

2025-03-11 00:05:53
推荐回答(4个)
回答1:

PHP不支持这种调用方式,你的需求是不能实现的。

如果你不能改动函数,那么你可以做一个封装。PHP的语法比较灵活,有几种替代方式你可以借鉴。这些例子都有广泛的应用。

示例一:如果参数值为null,则在函数里强制赋值为默认值

function foo2($a=1,$b=2,$c=3) {
    if ($a === null) $a=1;
    if ($b === null) $b=2;
    if ($c === null) $c=3;
    foo($a, $b, $c);
}
foo(1, null, 3);

示例二:使用数组参数

function foo3($array=array()) {
    extract($array);
    if (!isset($a)) $a=1;
    if (!isset($b)) $b=2;
    if (!isset($c)) $c=3;
    foo($a, $b, $c);
}
foo(array('a'=>1, 'c'=>3));


python是支持你所说的那种调用方式的:

def foo(a=1, b=2, c=3):
    pass
foo(a=1, c=3)

回答2:

跨过中间的默认参数?
地球上目前么有任何编程语言能支持这种奇怪的调用方式。
也许可以利用反射做到这一点?
我不确定。

回答3:

function foo()
{
$numargs = func_num_args();
echo "Number of arguments: $numargs
\n";
if ($numargs >= 2) {
echo "Second argument is: " . func_get_arg(1) . "
\n";
}
$arg_list = func_get_args();
for ($i = 0; $i < $numargs; $i++) {
echo "Argument $i is: " . $arg_list[$i] . "
\n";
}
}

foo(1, 2, 3);
?>

回答4:

不能做一个外套函数吗?
foo2($a=4,$c=5){
foo($a,2,$c);
}
foo2($a=4,$c=5)