2009-10-22 21 views
12

Değişken sayıdaki argümanları kabul eden ve sonra bunları sprintf() öğesine ileten bir işlev yazmak istiyorum. ÖrneğinDeğişken değişken listesini sprintf'ye geçirme()

:

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

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

Ben PHP bunu nasıl?

cevap

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 geçici değişken gereklidir kullanın func_get_args 5.3 öncesinde PHP sürümlerinde bir fonksiyonun argümanları listesinde kullanılamaz çünkü .

+0

'vsprintf' gerçekten iyi bir fikir! – knittl

+0

oh vsprintf hakkında bilgim yoktu. Teşekkürler :) – Rob

+0

vsprintf tüm yolu –

0

almak için bir yoldur Birçok argüman size geçtiler ve sonra her birini func_get_arg() veya func_get_args() ile arayarak alırsınız. Çok kolay :)

İlgili konular