As has been mentioned, a partir de PHP 5.6+ también se puede utilizar el ...
token (también conocido como "operador splat") como parte de la funcionalidad funciones 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: Los elementos de la matriz se asignan a argumentos por su posición en la matriz, no sus claves.
EDITAR
De acuerdo con el comentario de CarlosCarucce, argumento de desembalaje (como se muestra arriba) es el método más rápido, con mucho, en todos los casos. En algunos casos, es más de 5 veces más rápido que call_user_func_array
.
TAMBIÉN
porque creo que esto es realmente útil (aunque no directamente relacionada con la pregunta): usted puede type-hint the splat operator parameter en su definición de función para asegurarse de que todos los valores pasados que coincida con un tipo específico.
(Sólo recuerde que al hacer esto se MUST sea el parámetro última se define y que contiene todas parámetros pasados a la función en la matriz.)
Esto es grande para asegurarse de una matriz contiene elementos de un tipo específico:
<?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);
Podría haber jurado que tampoco era una función, como un carácter de prefijo o algo así. Gracias. –
Lo es, pero no en PHP. En Python ;-) – vartec
¡Pero no conozco Python! Debo ser accidentalmente psíquica ...: D –