将 PHP splat 参数传递给另一个函数

Pass PHP splat parameters to another function

如果我有一个接受 splat 参数的 PHP 函数:

function1(...$parms1) {...}

我从另一个也接受 splat 参数的函数调用这个函数:

function2(...$parms2) {function1($parms2);}

函数 1 的调用似乎将函数 2 的参数包装到另一个数组中(即函数 1 看到数组中的数组)。

是否可以按原样将参数从 function2 传递到 function1,而不隐式创建第二个参数数组?

不要误会我的意思,我可以看到 PHP 正在做我要求它做的事情,但如果我能通过 function2 会更方便直接跳到 function1.

如有任何建议,我们将不胜感激。

这种方式很简单:

function2(...$parms2) {
    // stuff happens...
    // then call function1
    function1(...$parms2);
}

Splat 也适用于调用。

勾选PHP documentation for function arguments。在示例 #14 中,您可以看到 ... 用于像您当前所做的那样接受参数。在示例 #15 中,您可以看到它用于提供参数,如我在此处所示。

$parms2 不是特定于可变长度参数的某种特殊类型的可迭代对象,它只是一个普通数组。这就是为什么您在 function1() 中看到 "array within an array" 的原因,但这也意味着当您使用它调用 function1().

时,它可以用 ... 解包