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是个接口。我不能改动,只知道调用参数。 展开
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是个接口。我不能改动,只知道调用参数。 展开
4个回答
展开全部
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)
展开全部
跨过中间的默认参数?
地球上目前么有任何编程语言能支持这种奇怪的调用方式。
也许可以利用反射做到这一点?
我不确定。
地球上目前么有任何编程语言能支持这种奇怪的调用方式。
也许可以利用反射做到这一点?
我不确定。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<?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);
?>
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);
?>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不能做一个外套函数吗?
foo2($a=4,$c=5){
foo($a,2,$c);
}
foo2($a=4,$c=5)
foo2($a=4,$c=5){
foo($a,2,$c);
}
foo2($a=4,$c=5)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询