распаковка массива аргументов в php
-
08-07-2019 - |
Вопрос
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 р>
В определенных сценариях вы можете рассмотреть возможность использования распаковка
, что возможно в php, аналогично python:
list($min, $max) = [3, 6];
range($min, $max);
Вот как я пришел к этому ответу, по крайней мере.
Поиск Google: распаковка аргумента PHP