Как преобразовать массив в параметры метода?

Мне нужно передать параметры (например: 'param1', 'param2', 'param3') к методу... но у меня есть массив параметров (например: array('param1', 'param2', 'param3')). Как преобразовать массив в параметры?

function foo(array $params) {

    bar(
        // Here should be inserted params not array.
    );

}

3 ответа

Решение

Используйте функцию call_user_func_array.

Например:

call_user_func_array('bar', $params);

Если вы знаете имена параметров, вы можете

$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
}

но большое внимание уделите типам и количеству параметров, чтобы не доставить вам проблем.

Посетите: Аргументы функции

Другие вопросы по тегам