Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top