Подтвердить что ты не робот

PHP - передать массив как список аргументов переменной длины

У меня действительно простая проблема в моем PHP script. Существует определенная функция, которая принимает список аргументов переменной длины:

function foo() {
  // func_get_args() and similar stuff here
}

Когда я называю это так, он работает нормально:

foo("hello", "world");

Однако у меня есть переменные в массиве, и мне нужно передать их "отдельно" в качестве отдельных аргументов функции. Например:

$my_args = array("hello", "world");
foo(do_some_stuff($my_args));

Есть ли функция do_some_stuff, которая разделяет аргументы для меня, поэтому я могу передать их функции?

4b9b3361

Ответ 4

Звучит так, как будто вы ищете call_user_func_array.

Ответ 6

Если вы можете изменить код foo(), это должно быть легко решить в одном месте.

function foo()
{
    $args = func_get_args();
    if(count($args) == 1 && is_array($args[0]))
    {
        $args = $args[0]
    }
    // use $args as normal
}

Ответ 7

Это решение не рекомендуется вообще, а просто показывает возможность:

Используя eval

eval ( "foo('" . implode("', '", $args_array) . "' )" );