Come è stato menzionato , a partire da PHP 5.6+ puoi (dovresti!) Usare il ...
token (aka "operatore splat", parte della funzionalità delle funzioni variadiche ) per chiamare facilmente una funzione con una serie di argomenti:
<?php
function variadic($arg1, $arg2)
{
// Do stuff
echo $arg1.' '.$arg2;
}
$array = ['Hello', 'World'];
// 'Splat' the $array in the function call
variadic(...$array);
// 'Hello World'
Nota: gli elementi dell'array sono associati agli argomenti in base alla loro posizione nell'array, non alle loro chiavi.
Secondo il commento di CarlosCarucce , questa forma di disimballaggio è il metodo più veloce in assoluto in tutti i casi. In alcuni confronti, è oltre 5 volte più veloce di call_user_func_array
.
A parte
Perché penso che questo sia davvero utile (anche se non direttamente correlato alla domanda): puoi digitare-suggerire il parametro dell'operatore splat nella definizione della tua funzione per assicurarti che tutti i valori passati corrispondano a un tipo specifico.
(Ricorda solo che in questo modo DEVE essere l' ultimo parametro che definisci e che raggruppa tutti i parametri passati alla funzione nell'array.)
Questo è ottimo per assicurarsi che un array contenga elementi di un tipo specifico:
<?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);