Pregunta

Python proporciona el " * " operador para desempaquetar una lista de tuplas y asignarlas a una función como argumentos, así:

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

Esto es equivalente a:

range(3, 6)

¿Alguien sabe si hay una manera de lograr esto en PHP? Algunas búsquedas en Google para variaciones de "PHP Unpack" no ha aparecido nada de inmediato ... ¿tal vez se llama algo diferente en PHP?

¿Fue útil?

Solución

Puede usar call_user_func_array () para lograr eso:

call_user_func_array (" range " ;, $ args); para usar su ejemplo.

Otros consejos

En php5.6 el ... operator ha sido agregado. Al usarlo, puede deshacerse de call_user_func_array () para esta alternativa más simple. Por ejemplo, tener una función

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

y su matriz $ list = [4, 6]; (después de php5.5 puede declarar matrices de esta manera). Puede llamar a su función con ... :

echo add (... $ list);

Debería usar call_user_func_array

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

http://www.php.net/call_user_func_array

o use la api de reflexión http://www.php.net/oop5.reflection

En ciertos escenarios, puede considerar usar desempaquetar , que es posible en php, es una forma similar a python:

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

Así es como llegué a esta respuesta al menos. Búsqueda de Google: desempaquetado de argumentos PHP

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top