对于您不想指定的参数,传递 或 仍会导致这些 null 和空字符串被传递给函数。null
""
仅当参数在调用代码中未全部设置时,才会使用参数的默认值。 将让 args #2 和 #3 获取默认值,但如果这样做,则 arg #3 为 null,arg #3 是函数中的空字符串,而不是默认值。example('a')
example('a', null, "")
理想情况下,PHP将支持允许将默认值用于arg #2之类的东西,但这只是一个语法错误。example('a', , "")
如果需要在函数调用过程中省略参数,但为后面的参数指定值,则必须显式检查函数本身中的某个 sentinel 值,并自行设置默认值。
下面是一些示例代码:
<?php
function example($a = 'a', $b = 'b', $c = 'c') {
var_dump($a);
var_dump($b);
var_dump($c);
}
对于各种输入:
example():
string(1) "a"
string(1) "b"
string(1) "c"
example('z'):
string(1) "z"
string(1) "b"
string(1) "c"
example('y', null):
string(1) "y"
NULL
string(1) "c"
example('x', "", null):
string(1) "x"
string(0) ""
NULL
请注意,一旦在函数调用中为参数指定了 ANYTHING,该值就会传递给函数并覆盖在函数定义中设置的默认值。