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

Передача списка переменных аргументов в sprintf()

Я хотел бы написать функцию, которая (среди прочего) принимает переменное количество аргументов, а затем передает их в sprintf().

Например:

<?php
function some_func($var) {
  // ...
  $s = sprintf($var, ...arguments that were passed...);
  // ...
}

some_func("blah %d blah", $number);
?>

Как это сделать в PHP?

4b9b3361

Ответ 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);
}