在PHP手册中,为了显示具有可选参数的函数的语法,它们在每组相关的可选参数周围使用方括号。 例如,对于date()函数,手册内容如下:
1
| string date ( string $format [, int $timestamp = time() ] ) |
其中$timestamp是可选参数,当留空时,默认为time()函数的返回值。
在PHP中定义自定义函数时,如何创建像这样的可选参数?
与手册非常相似,在参数定义中使用等号(=):
1 2 3
| function dosomething($var1, $var2, $var3 = 'somevalue'){
// Rest of function here...
} |
The default value of the argument must be a constant expression. It can't be a variable or a function call.
但是,如果需要此功能:
1 2 3 4 5 6 7
| function foo($foo, $bar = false)
{
if(!$bar)
{
$bar = $foo;
}
} |
假定$bar当然不是布尔值。
我也发现有用的一些注意事项:
给可选参数一个默认值。
1 2
| function date ($format, $timestamp='') {
} |
日期函数将定义如下:
1 2 3 4 5 6 7 8
| function date($format, $timestamp = null)
{
if ($timestamp === null) {
$timestamp = time();
}
// Format the timestamp according to $format
} |
通常,您将使用以下默认值:
1 2 3 4
| function foo($required, $optional = 42)
{
// This function can be passed one or more arguments
} |
但是,只有文字是有效的默认参数,这就是为什么我在第一个示例中将null用作默认参数而不是$timestamp = time()并将其与null检查结合的原因。文字包括数组(array()或[]),布尔值,数字,字符串和null。
如果您不知道需要处理多少个属性,可以使用PHP 5.6中引入的可变参数列表标记(...)(请参阅此处的完整文档)。
句法:
1
| function <functionName> ([<type> ]...<$paramName>) {} |
例如:
1 2 3 4 5 6 7 8 9
| function someVariadricFunc(...$arguments) {
foreach ($arguments as $arg) {
// do some stuff with $arg...
}
}
someVariadricFunc(); // an empty array going to be passed
someVariadricFunc('apple'); // provides a one-element array
someVariadricFunc('apple', 'pear', 'orange', 'banana'); |
如您所见,该令牌基本上将所有参数都转换为数组,您可以按照自己喜欢的任何方式对其进行处理。