As has been mentioned, come di PHP 5.6+ è anche possibile utilizzare il ...
Token (alias "operatore di splat") come parte della funzionalità funzioni variadic (see here for more info)
<?php
$array = ['Hello', 'World'];
function variadic($arg1, $arg2)
{
// Do stuff
echo $arg1.' '.$arg2;
}
// Splat $array in function call
variadic(...$array);
// Will echo 'Hello World'
Nota: elementi di matrice sono mappati a argomenti in base alla loro posizione nell'array, non alle loro chiavi.
EDIT
Come per il commento di CarlosCarucce, argomento disimballaggio (come mostrato sopra) è il metodo più veloce di gran lunga in tutti i casi. In alcuni casi, è oltre 5 volte più veloce di call_user_func_array
.
ANCHE
Perché credo che questo è davvero utile (anche se non direttamente legati alla questione): si può type-hint the splat operator parameter nella tua definizione di funzione per assicurarsi che tutti i valori passati corrispondono un tipo specifico.
(Basta ricordare che facendo questo MUST essere il parametro ultima si definisce e che fasci tutti i parametri passati alla funzione nella matrice.)
Questo è grande per fare in modo un array contiene articoli di un tipo specifico:
<?php
// Define the function...
function variadic(SomeClass ...$items)
{
// All items will be of type `SomeClass`
foreach ($items as $item) {
$item->someClassInstanceMethod();
}
}
// Then call...
variadic(new SomeClass, new SomeClass);
// OR
$items = [
new SomeClass,
new SomeClass,
];
variadic(...$items);
Avrei potuto giurare che era anche una non funzione, come un carattere prefisso o qualcosa del genere. Grazie. –
Lo è, ma non in PHP. In Python ;-) – vartec
Ma io non conosco Python! Devo essere accidentalmente sensuale ...: D –