在
PHP 7.x
中,我有一些函数可以获取参数数组,然后获取一些标志。
一个简化的示例:
<?php
function sum($param, $min=0, $max=100)
{
$sum = 0;
foreach ($param as $value)
if ($value>=$min && $value<=$max)
$sum += $value;
return $sum;
}
echo sum([100, 10, 4], 0, 50);
?>
现在在
PHP 8.1
中,我想将函数定义更改为variadic
(解包数组),并将函数调用更改为named arguments
所以我将函数定义更改为:
function sum(...$param, $min=0, $max=100)
以及对此的函数调用:
echo sum(100, 10, 4, max:50);
但我收到此错误消息:
Fatal error: Only the last parameter can be variadic in test.php on line 2
有什么办法解决吗?
蒂亚
您需要重写订单,如错误所示:
可变参数作为最后一个参数。
function sum($min=0, $max=100, ...$param)