2008-11-16 10 views
23

Python fournit l'opérateur « * » pour déballer une liste de tuples et en leur donnant une fonction comme arguments, comme ceci:déballer un tableau d'arguments en php

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

Cela équivaut à:

range(3, 6) 

Est-ce que quelqu'un sait s'il existe un moyen d'y parvenir en PHP? Certains googling pour les variations de "PHP Unpack" n'a pas immédiatement montré quelque chose .. peut-être qu'il s'appelle quelque chose de différent en PHP?

Répondre

22

Vous pouvez utiliser call_user_func_array() pour y parvenir:

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

13

En php5.6 le ... operator a été ajouté. En l'utilisant, vous pouvez vous débarrasser de call_user_func_array() pour cette alternative plus simple. Par exemple ayant 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(...$list);

+0

Ne fonctionne pas si votre tableau a des clés de chaîne;) – BusyAnt

0

Dans certains scénarios, vous pouvez envisager d'utiliser unpacking, ce qui est possible en php, est une manière similaire à python:

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

C'est comment je suis arrivé à cette réponse au moins. Recherche Google: PHP argument unpacking