すでに述べたように、PHP 5.6以降では、...
トークン(別名「スプラットオペレーター」、可変関数の機能の一部)を使用して、引数の配列で関数を簡単に呼び出すことができます(推奨!)。
<?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);