Comme cela a été mentionné , à partir de PHP 5.6+, vous pouvez (devriez!) Utiliser le ...
jeton (aka "splat operator", une partie de la fonctionnalité des fonctions variadiques ) pour appeler facilement une fonction avec un tableau d'arguments:
<?php
function variadic($arg1, $arg2)
{
// Do stuff
echo $arg1.' '.$arg2;
}
$array = ['Hello', 'World'];
// 'Splat' the $array in the function call
variadic(...$array);
// 'Hello World'
Remarque: les éléments du tableau sont mappés aux arguments par leur position dans le tableau et non par leurs clés.
Selon le commentaire de CarlosCarucce , cette forme de déballage d'arguments est de loin la méthode la plus rapide dans tous les cas. Dans certaines comparaisons, c'est plus de 5 fois plus rapide que call_user_func_array
.
De côté
Parce que je pense que c'est vraiment utile (mais pas directement lié à la question): vous pouvez taper le paramètre d'opérateur splat dans votre définition de fonction pour vous assurer que toutes les valeurs passées correspondent à un type spécifique.
(N'oubliez pas que cela DOIT être le dernier paramètre que vous définissez et qu'il regroupe tous les paramètres passés à la fonction dans le tableau.)
C'est idéal pour s'assurer qu'un tableau contient des éléments d'un type spécifique:
<?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);