2008-11-16 8 views
23

Python proporciona al operador "*" para desempaquetar una lista de tuplas y dándoles a una función como argumentos, así:desembalaje una matriz de argumentos en php

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 de variaciones de "PHP Unpack" no han revelado nada inmediatamente ... ¿quizás se llame algo diferente en PHP?

Respuesta

13

En php5.6 la ... operator se ha agregado. Utilizándolo, puede deshacerse de call_user_func_array() para esta alternativa más simple. Por ejemplo tiene una función

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

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

echo add(...$list);

+0

No funciona si su matriz tiene cadenas de caracteres;) – BusyAnt

0

En ciertos escenarios, es posible considerar el uso de unpacking, que es posible en PHP, es una manera similar a Python:

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

Este es cómo he llegado a esta respuesta al menos. Google search: PHP argument unpacking