décompresser un tableau d'arguments en php
-
08-07-2019 - |
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?
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