Jak już wspomniano , od PHP 5.6+ możesz (powinieneś!) Użyć ...
tokena (znanego również jako "operator splat", część funkcjonalności funkcji wariadycznych ), aby łatwo wywołać funkcję z tablicą argumentów:
<?php
function variadic($arg1, $arg2)
{
// Do stuff
echo $arg1.' '.$arg2;
}
$array = ['Hello', 'World'];
// 'Splat' the $array in the function call
variadic(...$array);
// 'Hello World'
Uwaga: elementy tablicy są mapowane na argumenty na podstawie ich pozycji w tablicy, a nie kluczy.
Zgodnie z komentarzem CarlosCarucce , ta forma rozpakowywania argumentów jest zdecydowanie najszybszą metodą we wszystkich przypadkach. W niektórych porównaniach jest ponad 5 razy szybszy niż call_user_func_array
.
Na bok
Ponieważ myślę, że jest to naprawdę przydatne (choć nie jest bezpośrednio związane z pytaniem): możesz wskazać parametr operatora splat w definicji funkcji, aby upewnić się, że wszystkie przekazane wartości pasują do określonego typu.
(Pamiętaj tylko, że robiąc to MUSI to być ostatni zdefiniowany parametr i że wszystkie parametry przekazane do funkcji zostaną umieszczone w tablicy).
Jest to świetne do upewnienia się, że tablica zawiera elementy określonego typu:
<?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);