2009-10-22 11 views
12

Chciałbym napisać funkcję, która (między innymi) akceptuje zmienną liczbę argumentów, a następnie przekazuje je do sprintf().Przekazywanie zmiennej listy argumentów do sprintf()

Na przykład:

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

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

Jak mogę to zrobić w PHP?

Odpowiedz

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

Zmienna tymczasowa $args jest konieczne, ponieważ func_get_args nie mogą być używane w wykazie arguments funkcji w wersjach PHP przed 5.3 .

+0

'vsprintf' to naprawdę dobry pomysł! – knittl

+0

oh Nie wiedziałem o vsprintf. Dzięki :) – Rob

+0

vsprintf całą drogę –

0

użyj $ numargs = func_num_args(); i func_get_arg (i) w celu pobrania argumentu

Powiązane problemy