spacchettare un array di argomenti in php
-
08-07-2019 - |
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?
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