Question

Python fournit les "& *;" " opérateur permettant de décompresser une liste de n-uplets et de les attribuer à une fonction sous forme d'arguments, comme suit:

args = [3, 6]
range(*args)            # call with arguments unpacked from a list

Ceci est équivalent à:

range(3, 6)

Quelqu'un sait-il s'il existe un moyen d'y parvenir en PHP? Quelques recherches sur Google pour des variantes de " PHP Unpack " n’a-t-il pas immédiatement trouvé quoi que ce soit… peut-être s'appelle-t-il quelque chose de différent en PHP?

Était-ce utile?

La solution

Vous pouvez utiliser call_user_func_array () pour cela:

call_user_func_array ("range", $ args); pour utiliser votre exemple.

Autres conseils

Dans php5.6 , le l'opérateur ... a été ajouté. En l'utilisant, vous pouvez vous débarrasser de call_user_func_array () pour cette alternative plus simple. Par exemple, avoir une fonction

function add($a, $b){
  return $a + $b;
}

et votre tableau $ list = [4, 6]; (après php5.5, vous pouvez déclarer des tableaux de cette façon). Vous pouvez appeler votre fonction avec ... :

echo add (... $ liste);

Vous devriez utiliser le call_user_func_array

call_user_func_array(array(CLASS, METHOD), array(arg1, arg2, ....))

http://www.php.net/call_user_func_array

ou utilisez l'api de réflexion http://www.php.net/oop5.reflection

Dans certains scénarios, vous pouvez envisager d'utiliser décompresser , ce qui est possible dans php, est similaire à python:

list($min, $max) = [3, 6];
range($min, $max);

Voici comment je suis arrivé à cette réponse au moins. Recherche Google: décompression des arguments PHP

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top