Вопрос

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

Например:

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

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

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

Это было полезно?

Решение

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.

Другие советы

используйте комбинацию 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);
}

use $ numargs = func_num_args (); и func_get_arg (i) для получения аргумента

Вот способ:

http: //www.php .net / ручной / EN / functions.arguments.php # functions.variable-Arg-лист

По сути, вы объявляете свою функцию как обычно, без параметров, затем вызываете func_num_args (), чтобы узнать, сколько аргументов они вам передали, а затем вы получаете каждый из них, вызывая func_get_arg () или func_get_args (). Это просто:)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top