распаковка массива аргументов в php
Python предоставляет оператор " * " для распаковки списка кортежей и предоставления их функции в качестве аргументов, например:
args = [3, 6]
range(*args) # call with arguments unpacked from a list
Это эквивалентно:
range(3, 6)
кто-нибудь знает, есть ли способ достичь этого в PHP? Некоторые googling для вариаций "PHP Unpack" не сразу ничего не обнаружили.. возможно, это называется чем-то другим в PHP?
4 ответов
можно использовать 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