如果您想要传递一个空参数或者 null
,但不想指定该参数的值,那么这些空值和 null
依然会被传递到函数中。
只有在调用代码中未设置某个参数时,才会使用该参数的默认值。例如,example('a')
将让参数 #2 和 #3 获取默认值,但如果您执行 example('a', null, "")
,则函数中的参数 #3 是 null
而参数 #3 是空字符串,而不是默认值。
理想情况下,PHP 应该支持类似于 example('a', , "")
的语法,以允许使用参数 #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
请注意,一旦在函数调用中指定了任何参数,该值将传递给函数并覆盖在函数定义中设置的默认值。
example($argument1, "", "test");
和example($argument1, NULL, "test");
。 - thetaiko