Передача списка переменных аргументов в sprintf()
Я хотел бы написать функцию, которая (среди прочего) принимает переменное количество аргументов, а затем передает их в sprintf().
Например:
<?php
function some_func($var) {
// ...
$s = sprintf($var, ...arguments that were passed...);
// ...
}
some_func("blah %d blah", $number);
?>
Как это сделать в PHP?
Ответы
Ответ 1
function some_func() {
$args = func_get_args();
$s = call_user_func_array('sprintf', $args);
}
// or
function some_func() {
$args = func_get_args();
$var = array_shift($args);
$s = vsprintf($var, $args);
}
Временная переменная $args
необходима, потому что func_get_args
не может использоваться в списке аргументов функции в версиях PHP до 5.3.
Ответ 2
использовать $numargs = func_num_args();
и func_get_arg (i) для извлечения аргумента
Ответ 3
Вот так:
http://www.php.net/manual/en/functions.arguments.php#functions.variable-arg-list
в основном, вы объявляете свою функцию как обычно, без параметров, затем вызываете func_num_args(), чтобы узнать, сколько аргументов они вам передали, а затем вы получаете каждый из них, вызывая func_get_arg() или func_get_args(). Это легко:)
Ответ 4
используйте комбинацию func_get_args
и call_user_func_array
function f($var) { // at least one argument
$args = func_get_args();
$s = call_user_func_array('sprintf', $args);
}