目标
我想写一个参数个数可变的函数(使用...
),它调用另一个具有相同参数的函数,并在末尾调用一个新的。顺序很重要!下面的例子只是为了演示。
我所尝试的
function foo(...$params) {
$extraVariable = 6;
var_dump(...$params, $extraVariable);
}
foo(2, 4, 1, 4);
问题
当我运行它时,我收到以下错误消息:
PHP致命错误:在第3行的/home/user/main. php中解包参数后无法使用位置参数
我怎样才能实现我的目标?
3条答案
按热度按时间t5zmwmid1#
tl;dr
根据设计,不允许在参数之后解包,但有两种解决方法:
说明
PHP根本不支持这个功能。
ymdaylpp2#
看到粗体字了吗?
PHP致命错误:在/home/user/main. php中第3行的参数解包后不能使用位置参数
所以在拆包之前先用它。
bqucvtff3#
有一个变通办法。你不能在一个未压缩的参数后使用位置参数,但是你可以使用几个未压缩的参数;因此,您可以将变量 Package 在数组文字中,然后按如下方式展开: