Как преобразовать массив в параметры метода?
Мне нужно передать параметры (например: 'param1', 'param2', 'param3'
) к методу... но у меня есть массив параметров (например: array('param1', 'param2', 'param3')
). Как преобразовать массив в параметры?
function foo(array $params) {
bar(
// Here should be inserted params not array.
);
}
3 ответа
Решение
2011-07-03 13:29
Если вы знаете имена параметров, вы можете
$params = array(
'param1' => 'value 1',
'param2' => 'value 2',
'param3' => 'value 3',
);
function foo(array $someParams) {
extract($someParams); // this will create variables based on the keys
bar($param1,$param2,$param3);
}
Не уверен, что это то, что вы имели в виду.
Вы можете преобразовать одно в другое следующим образом:
function foo(array $params)
{
bar(...$params);
}
или идите прямо в бар:
bar(...$array);
Чтобы функция «bar» получила несколько параметров, вы можете использовать:
function bar(...$params)
{
//$params is a array of parameters
}
или
function bar($p1, $p2, $p3)
{
//$pn is a variables
}
или
function bar($p1, ...$pn)
{
//$p1 is a variable
//$pn is a array of parameters
}
но большое внимание уделите типам и количеству параметров, чтобы не доставить вам проблем.
Посетите: Аргументы функции