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

例如:foo($a=1,$b=2,$c=3){echo$a;echo$b;echo$c;}那么在调用foo的时候怎么能赋值给$a和$c.而$b为默认的2.我知道这语法是错... 例如:
foo($a=1,$b=2,$c=3){
echo $a;
echo $b;
echo $c;

}
那么在调用foo的时候怎么能赋值给$a和$c.而$b为默认的2.

我知道这语法是错误的。例如,foo($a=4,$c=5)
比如foo中输出,
4 2 5
foo是个接口。我不能改动,只知道调用参数。
展开
 我来答
nbyh2012
推荐于2017-11-25 · TA获得超过3278个赞
知道小有建树答主
回答量:483
采纳率:100%
帮助的人:802万
展开全部

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

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

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

<?php
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);

示例二:使用数组参数

<?php
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)
极天异云
2013-06-15 · TA获得超过1054个赞
知道小有建树答主
回答量:1170
采纳率:42%
帮助的人:395万
展开全部
跨过中间的默认参数?
地球上目前么有任何编程语言能支持这种奇怪的调用方式。
也许可以利用反射做到这一点?
我不确定。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yp1000
2014-04-19 · 超过20用户采纳过TA的回答
知道答主
回答量:87
采纳率:0%
帮助的人:46.5万
展开全部
<?php
function foo()
{
$numargs = func_num_args();
echo "Number of arguments: $numargs<br />\n";
if ($numargs >= 2) {
echo "Second argument is: " . func_get_arg(1) . "<br />\n";
}
$arg_list = func_get_args();
for ($i = 0; $i < $numargs; $i++) {
echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
}
}

foo(1, 2, 3);
?>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
熊猫爱逛街
2018-09-08 · 超过10用户采纳过TA的回答
知道答主
回答量:23
采纳率:100%
帮助的人:4.9万
展开全部
不能做一个外套函数吗?
foo2($a=4,$c=5){
foo($a,2,$c);
}
foo2($a=4,$c=5)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式