我想用variable number of parameters (using ...
)编写一个函数,调用具有相同参数的另一个函数,并在末尾调用一个新的 。订单很重要!以下示例仅供演示。
function foo(...$params) {
$extraVariable = 6;
var_dump(...$params, $extraVariable);
}
foo(2, 4, 1, 4);
当我运行它时,我收到以下错误消息:
PHP致命错误:在第3行的/home/user/main.php中解压缩后,无法使用位置参数
我如何实现目标?
答案 0 :(得分:1)
看到粗体字?
PHP致命错误:在第3行的/home/user/main.php中解压缩参数后,无法使用位置参数
所以在>强拆包之前使用。
ViewController
答案 1 :(得分:0)
设计不允许在参数后解包,但有2种解决方法:
从新元素创建数组并将其解压缩为Paul suggested:
function foo(...$params) {
$extraVariable = 6;
var_dump(...$params, ...[$extraVariable]);
}
将新元素推送到参数:
function foo(...$params) {
$extraVariable = 6;
$params[] = $extraVariable;
var_dump(...$args);
}
PHP根本不支持这个。您可以看到unit test that checks this behavior:
--TEST--
Positional arguments cannot be used after argument unpacking
--FILE--
<?php
var_dump(...[1, 2, 3], 4);
?>
--EXPECTF--
Fatal error: Cannot use positional argument after argument unpacking in %s on line %d
答案 2 :(得分:0)
有一个解决方法。您不能在解压缩一个参数后使用位置参数,但可以使用多个解压缩的参数。因此,您只需将变量包装在数组文字中,然后像这样解开包装即可:
E