我是 php 新手,并且有 java 和 C 的编码经验。所以可选参数对我来说有点混乱。我想知道如果一个函数有两个可选参数并且如果我传递一个参数,哪个参数将被映射到参数?
问问题
227 次
3 回答
5
参数顺序永远不会改变(从左到右),所以如果你只提供一个参数,第一个参数将接收值,第二个参数将具有默认值。
例如:
function foo( $a = 1, $b = 2) {}
foo(); // $a = 1, $b = 2
foo( 3); // $a = 3, $b = 2
foo( 4, 5); // $a = 4, $b = 5
请注意,由于参数的顺序,无法设置 的值$b
同时仍保留 的默认值。$a
您必须foo()
像这样调用才能完成此操作:
foo( 1, 6);
于 2012-10-16T16:52:07.343 回答
1
第一个参数总是传递给参数中的第一个变量,第二个传递给第二个,依此类推,无论它们是否是可选的。
可选参数和非可选参数之间的唯一区别是,当调用中没有足够的参数来满足所有非可选参数时,会引发警告。
function f($a = 1, $b, $c, $d = 2)
{
var_dump($a, $b, $c, $d);
}
f('x');
函数内部$a
将为“x”,$b
将为$c
null并将为$d
2 ,但将引发警告。
因此,将可选参数留给非可选参数是没有意义的——尽管这在语法上是正确的——因为你永远不能在不生成警告的情况下将它们留在调用中。
于 2012-10-16T17:02:00.960 回答
0
例如
function test($test = null, $test_2 = null, $test_3 = null) {
}
test(1) => $test=1;
test(1,1) => $test=1;$test_2=1;
test(1,1,1) => $test=1;$test_2=1;$test_3=1;
于 2012-10-16T16:52:36.550 回答