2009-10-22 12 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 का एक संयोजन और उपयोग करें, क्योंकि func_get_args 5.3 से पहले पीएचपी संस्करणों में एक समारोह के तर्कों की सूची में नहीं किया जा सकता ।

+0

'vsprintf' वास्तव में एक अच्छा विचार है! – knittl

+0

ओह मुझे vsprintf के बारे में पता नहीं था। धन्यवाद :) – Rob

+0

बनामप्रिंटफ सभी तरह से –

0

$ numargs = func_num_args() का उपयोग करें;

http://www.php.net/manual/en/functions.arguments.php#functions.variable-arg-list

मूल रूप से, आप हमेशा की तरह अपने समारोह की घोषणा, पैरामीटर के बिना, तो आप func_num_args फोन() कैसे पता लगाने के लिए: और func_get_arg (i) तर्क

0

यहाँ पुनः प्राप्त करने के तरीका है उन्होंने आपके द्वारा पारित कई तर्क, और फिर आप func_get_arg() या func_get_args() को कॉल करके प्रत्येक को प्राप्त करते हैं। यही कारण है, आसान है :)

संबंधित मुद्दे