php中的可选参数

时间:2012-10-16 16:49:43

标签: php function parameters

我是php的新手,在java和C中有编码经验。所以可选参数对我来说有点混乱。我想知道如果一个函数有两个可选参数,如果我传递一个参数,哪个参数将映射到参数?

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

第一个参数总是传递给参数中的第一个变量,第二个参数传递给第二个,依此类推,无论它们是否是可选的。

可选参数和非可选参数之间的唯一区别是,当调用中没有足够的参数来满足所有非可选参数时,将引发警告。

function f($a = 1, $b, $c, $d = 2)
{
  var_dump($a, $b, $c, $d);
}
f('x');

在函数$a内," x",$b$c null $d将是2 但会发出警告

因此,将非可选参数保留为可选参数是没有意义的 - 虽然这在语法上是正确的 - 因为你永远不会在调用中将它们遗漏而不会产生警告。

答案 2 :(得分: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;