2009-10-22 10 views
12

Je voudrais écrire une fonction qui accepte entre autres un nombre variable d'arguments, puis les passe à sprintf().Passer la liste d'arguments variable à sprintf()

Par exemple:

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

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

Comment puis-je faire en PHP?

Répondre

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

La variable temporaire $args est nécessaire, car func_get_args ne peut pas être utilisé dans la liste des arguments d'une fonction dans les versions de PHP antérieures à la 5.3 .

+0

'vsprintf' est une très bonne idée! – knittl

+0

oh je ne savais pas à propos de vsprintf. Merci :) – Rob

+0

vsprintf tout le chemin –

0

Voici le chemin beaucoup d'arguments ils vous ont passé, et puis vous obtenez chacun en appelant func_get_arg() ou func_get_args(). C'est facile :)

Questions connexes