如前所述,从 PHP 5.6+ 开始,您可以(应该!)使用令牌(又名“splat 运算符”,可变参数函数功能的一部分)轻松调用具有参数数组的函数:...
<?php
function variadic($arg1, $arg2)
{
// Do stuff
echo $arg1.' '.$arg2;
}
$array = ['Hello', 'World'];
// 'Splat' the $array in the function call
variadic(...$array);
// 'Hello World'
注意:数组项通过其在 数组中的位置(而不是键)映射到参数。
根据CarlosCarucce的评论,这种形式的论证解压缩是迄今为止在所有情况下最快的方法。在一些比较中,它比 快5倍以上。call_user_func_array
旁白
因为我认为这非常有用(尽管与问题没有直接关系):您可以在函数定义中键入提示 splat 运算符参数,以确保所有传递的值都与特定类型匹配。
(请记住,这样做必须是您定义的最后一个参数,并且它将传递给函数的所有参数捆绑到数组中。
这对于确保数组包含特定类型的项目非常有用:
<?php
// Define the function...
function variadic($var, SomeClass ...$items)
{
// $items will be an array of objects of type `SomeClass`
}
// Then you can call...
variadic('Hello', new SomeClass, new SomeClass);
// or even splat both ways
$items = [
new SomeClass,
new SomeClass,
];
variadic('Hello', ...$items);