PHP 在用户自定义函数中支持可变数量的参数列表。
在 PHP 5.6 及以上的版本中,由 … 语法实现;
在 PHP 5.5 及更早版本中,使用函数 func_num_args(),func_get_arg(),和 func_get_args() 。
在PHP 5.6和更高版本中,参数列表可能包括…符号,表示该函数接受变量数目的参数。参数将作为数组传递给给定的变量;
例如:
<?php
function sum(...$numbers) {
$acc = 0;
foreach ($numbers as $n) {
$acc += $n;
}
return $acc;
}
echo sum(1, 2, 3, 4, 5);
以上例程会输出:
15
也可以用…当调用函数将数组或遍历变量或文字解压到参数列表时
例# 14使用……提供参数
<?php
function add($a, $b) {
return $a + $b;
}
echo add(...[1, 2])."\n";
$a = [1, 2];
echo add(...$a);
以上例程会输出:
3
3
您可以在"…“后传入数组,数组会依次传入函数中。
对像类型参数,需要在指定对象后加”…",参数放在最后依次传入。
<?php
function total_intervals($unit, DateInterval ...$intervals) {
$time = 0;
foreach ($intervals as $interval) {
$time += $interval->$unit;
}
return $time;
}
$a = new DateInterval('P1D');
$b = new DateInterval('P2D');
echo total_intervals('d', $a, $b).' days';
// This will fail, since null isn't a DateInterval object.
echo total_intervals('d', null);
以上例程会输出
3 days
PHP Fatal error: Uncaught TypeError: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in /U
最后,您还可以通过前缀来引用变量参数。与字符(&)。