PHP 8.1可变参数后用命名参数报错,求解决方法
问题解决办法
错误原因
PHP语法明确规定:可变参数(...$param)必须是函数的最后一个参数。你将可变参数放在$min、$max之前,违反了这个规则,因此触发致命错误。
正确实现方案
调整参数顺序,将可选参数$min、$max前置,可变参数放在最后,同时结合命名参数调用:
函数定义
<?php function sum($min = 0, $max = 100, ...$params) { $sum = 0; foreach ($params as $value) { if ($value >= $min && $value <= $max) { $sum += $value; } } return $sum; }
调用方式
通过命名参数指定max(或min),后续直接传入数值参数:
echo sum(max:50, 100, 10, 4); // 输出结果:14
如果需要同时指定min和max:
echo sum(min:10, max:50, 100, 10, 4); // 输出结果:14
这种写法既满足了可变参数的需求(无需打包成数组,直接传多个数值),又能通过命名参数灵活控制可选参数,完全符合PHP 8.1的语法规范。
内容的提问来源于stack exchange,提问作者safineh
相关产品推荐
相关产品推荐

