php在用户自定义函数中支持可变数量的参数列表。由…语法实现
#包含...的参数,会转换为指定参数变量的一个数组
function foo(...$args)
{
$sum = 0;
foreach ($args as $v){
$sum += $v;
}
return $sum;
}
echo foo(1,2,3,4); //10
#也可以使用...作为参数传递到函数中
function add($a,$b)
{
return $a+$b;
}
$arr = [1,2];
echo add(...$arr); #3
$arr = [1,2,3];
echo add(...$arr); # 也是3
$arr = [1];
$arr = [];
//echo add(...$arr); # 错误 Too few arguments to function add(),
echo "<br>";
#可以在...参数前加一个类型声明,如果存在这种类型,那么...捕获的所有参数都必须匹配 该类型
function total($unit,DateInterval ...$intervals)
{
$time = 0;
foreach ($intervals as $interval){
$time += $interval->$unit;
}
return $time;
}
$a = new DateInterval('P1D');
$b = new DateInterval('P3D');
echo total('d',$a,$b); //4
echo total('d',[$a,2]); //Argument 2 passed to total() must be an instance of DateInterval