распаковка массива аргументов в php

Python предоставляет оператор «*» для распаковки списка кортежей и предоставления им функции в качестве аргументов, например:

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

Это эквивалентно:

 range(3, 6) 

Кто-нибудь знает, есть ли способ достичь этого в PHP? Некоторые поисковые запросы по вариантам «PHP Unpack» не сразу принесли что-либо … возможно, это называется чем-то другим в PHP?

Вы можете использовать call_user_func_array() для достижения этого:

call_user_func_array("range", $args); для использования вашего примера.

В php5.6 добавлен оператор ... Используя это, вы можете избавиться от call_user_func_array() для этой более простой альтернативы. Например, имея функцию

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

и ваш массив $list = [4, 6]; (после php5.5 вы можете объявить массивы таким образом). Вы можете вызвать свою функцию с помощью ... :

echo add(...$list);

Вы должны использовать call_user_func_array

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

http://www.php.net/call_user_func_array

или использовать отражение api http://www.php.net/oop5.reflection

В некоторых сценариях вы можете рассмотреть возможность использования unpacking , что возможно в php, аналогично python:

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

Вот как я, по крайней мере, пришел к этому ответу. Поиск в Google: PHP argument unpacking