2009-10-22 119 views
12

我想写一个函数(除其他外)接受可变数量的参数,然后将它们传递给sprintf()。将可变参数列表传递给sprintf()

例如:

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

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

如何在PHP中做到这一点?

回答

21
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以前使用。

+0

'vsprintf'是一个非常好的主意! – knittl 2009-10-22 12:36:52

+0

哦,我不知道vsprintf。谢谢:) – Rob 2009-10-22 12:40:35

+0

vsprintf一路 – 2009-10-22 13:08:04

0

使用$ numargs = func_num_args(); 和func_get_arg(我)来检索参数