我想写一个函数(除其他外)接受可变数量的参数,然后将它们传递给sprintf()。将可变参数列表传递给sprintf()
例如:
<?php
function some_func($var) {
// ...
$s = sprintf($var, ...arguments that were passed...);
// ...
}
some_func("blah %d blah", $number);
?>
如何在PHP中做到这一点?
我想写一个函数(除其他外)接受可变数量的参数,然后将它们传递给sprintf()。将可变参数列表传递给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以前使用。
使用$ numargs = func_num_args(); 和func_get_arg(我)来检索参数
这里是这样的:
http://www.php.net/manual/en/functions.arguments.php#functions.variable-arg-list
基本上,你声明你的函数像往常一样,没有参数,然后调用func_num_args(),以了解如何他们通过你的许多论据,然后你通过调用func_get_arg()或func_get_args()来获得每一个参数。这很容易:)
使用和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);
}
'vsprintf'是一个非常好的主意! – knittl 2009-10-22 12:36:52
哦,我不知道vsprintf。谢谢:) – Rob 2009-10-22 12:40:35
vsprintf一路 – 2009-10-22 13:08:04