Domanda

Python fornisce il " * " operatore per decomprimere un elenco di tuple e assegnarle a una funzione come argomenti, in questo modo:

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

Ciò equivale a:

range(3, 6)

Qualcuno sa se esiste un modo per raggiungere questo obiettivo in PHP? Alcuni googling per le variazioni di "PHP Unpack" non ha subito mostrato nulla ... forse si chiama qualcosa di diverso in PHP?

È stato utile?

Soluzione

Puoi usare call_user_func_array () per raggiungere questo obiettivo:

call_user_func_array (" range " ;, $ args); per usare il tuo esempio.

Altri suggerimenti

In php5.6 il ... operator è stato aggiunto. Usandolo, puoi sbarazzarti di call_user_func_array () per questa alternativa più semplice. Ad esempio con una funzione

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

e il tuo array $ list = [4, 6]; (dopo php5.5 puoi dichiarare array in questo modo). Puoi chiamare la tua funzione con ... :

echo add (... $ list);

Dovresti usare call_user_func_array

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

http://www.php.net/call_user_func_array

o usa la riflessione api http://www.php.net/oop5.reflection

In alcuni scenari, potresti considerare di usare unpacking , che è possibile in php, è un modo simile a python:

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

Questo è almeno il modo in cui sono arrivato a questa risposta. Ricerca Google: disimballaggio argomento PHP

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top