包含...$vars
参数函数,该函数的参数个数是动态的,会转换为指定参数变量的一个数组
/**
* @param mixed ...$vars
*/
function dd(...$vars)
{
foreach ($vars as $var) {
var_dump($var);
}
exit;
}
调用该函数试试
dd(1,2,3);
dd(1,[2,3],[4,5],6);
也可以使用...$arr
作为参数传递到参数个数不确定的函数中
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(),
可以在...
参数前加一个类型声明,如果存在这种类型,那么…捕获的所有参数都必须匹配 该类型
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
...
语法在PHP中最常用的场景,如在魔术方法中应用
例如:Laravel框架中的门面
打印参数$args
会发现是调用方法$method
所传参数组成的数组,通过...$args
语法可将参数数组还原成动态参数