2009-10-22 13 views
12

Me gustaría escribir una función que (entre otras cosas) acepte un número variable de argumentos y luego los pase a sprintf().Pasando la lista de argumentos variables a sprintf()

Por ejemplo:

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

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

¿Cómo puedo hacer esto en PHP?

Respuesta

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); 
} 

es necesaria la variable temporal $args, porque func_get_args no se pueden utilizar en la lista de argumentos de una función en las versiones de PHP anteriores a 5.3 .

+0

'vsprintf' es una muy buena idea! – knittl

+0

oh no sabía sobre vsprintf. Gracias :) – Rob

+0

vsprintf todo el camino –

0

use $ numargs = func_num_args(); y func_get_arg (i) para recuperar el argumento

Cuestiones relacionadas