Ответ 1
Используйте
или
У меня действительно простая проблема в моем 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, которая разделяет аргументы для меня, поэтому я могу передать их функции?
Используйте
или
Ну, вам нужно call_user_func_array
call_user_func_array('foo', $my_args);
Вы ищете call_user_func_array()
.
http://it2.php.net/manual/en/function.call-user-func-array.php
Использование:
$my_args = array("hello", "world");
call_user_func_array('foo', $my_args);
// Equivalent to:
foo("hello", "world");
Звучит так, как будто вы ищете call_user_func_array
.
http://www.php.net/manual/en/functions.arguments.php#functions.variable-arg-list
Разве это не то, что вы хотите?
изменить ах... нормально... как насчет этого: Передача массива в виде аргументов, а не массива, в PHP
Если вы можете изменить код foo()
, это должно быть легко решить в одном месте.
function foo()
{
$args = func_get_args();
if(count($args) == 1 && is_array($args[0]))
{
$args = $args[0]
}
// use $args as normal
}
Это решение не рекомендуется вообще, а просто показывает возможность:
Используя eval
eval ( "foo('" . implode("', '", $args_array) . "' )" );