Передача списка аргументов переменной в sprintf ()
-
05-07-2019 - |
Вопрос
Я хотел бы написать функцию, которая (помимо прочего) принимает переменное число аргументов и затем передает их в 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 (). Это просто:)