Passing null
or ""
对于您不想指定的参数,仍然会导致这些空值和空字符串被传递给函数。
仅当参数在调用代码中未设置全部时才使用参数的默认值。example('a')
会让 args #2 和 #3 获得默认值,但如果你这样做example('a', null, "")
那么 arg #3 为 null 并且 arg #3 是函数中的空字符串,而不是默认值。
理想情况下,PHP 将支持类似的东西example('a', , "")
允许将默认值用于 arg #2,但这只是一个语法错误。
如果您需要在函数调用中间保留参数但为后面的参数指定值,则必须显式检查函数本身中的某些标记值并自行设置默认值。
这是一些示例代码:
<?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,该值就会传递给函数并覆盖函数定义中设置的默认值。