2009-10-25 4 views
14

PHP में आप एक फ़ंक्शन कॉल कर सकते हैं। इन कथनों का उपयोग करके सभी मानकों को कॉल न करके।फ़ंक्शन को कॉल करते समय डिफ़ॉल्ट मान का उपयोग

function test($t1 ='test1',$t2 ='test2',$t3 ='test3') 
{ 
echo "$t1, $t2, $t3"; 
} 

और तुम सिर्फ इस

test(); 

की तरह समारोह का उपयोग कर सकते तो बस कहते हैं कि मैं पिछले एक अलग नहीं हैं, लेकिन दूसरों होना चाहते हैं देता है।

test('test1','test2','hi i am different'); 

मैं इस कोशिश की: एक ही रास्ता मैं की बात कर सकते हैं कोई सफलता के साथ ऐसा करने से है

test(,,'hi i am different'); 
test(default,default,'hi i am different'); 

कुछ इस तरह करने का सबसे अच्छा तरीका क्या है?

उत्तर

2

डिफ़ॉल्ट मान वाले पैरामीटर अंतिम होने चाहिए, दूसरों के बाद, PHP में और अन्य सभी उस फ़ंक्शन को कॉल करते समय भरने चाहिए। मैं किसी भी मूल्य को पास करने के लिए नहीं जानता जो डिफ़ॉल्ट मान को ट्रिगर करता है।

25

उपयोग सरणियों:

function test($options = array()) { 
    $defaults = array(
     't1' => 'test1', 
     't2' => 'test2', 
     't3' => 'test3', 
    ); 
    $options = array_merge($defauts, $options); 
    extract($options); 
    echo "$t1, $t2, $t3"; 
} 

अपने कार्य इस तरह से कॉल करें:

test(array('t3' => 'hi, i am different')); 
+0

अहा, वहाँ हम चले! – JAL

+2

पेह, मुझे इसे हराया। एक उदाहरण होने के नाते, 'निकालें' ठीक है लेकिन असली दुनिया के उपयोग के लिए, कई चर घोषित करने की कोई आवश्यकता नहीं है। बस ध्यान देना चाहता था;) – phidah

1

क्या मैं सामान्य रूप से उन स्थितियों में क्या बजाय एक सरणी के रूप में पैरामीटर निर्दिष्ट करने के लिए है। निम्नलिखित उदाहरण देखें (अवांछित):

<?php 
test(array('t3' => 'something')); 

function test($options = array()) 
{ 
    $default_options = array('t1' => 'test1', 't2' => 'test2', 't3' => 'test3'); 
    $options = array_merge($default_options, $options); 

    echo $options['t1'] . ', ' . $options['t2'] . ', ' . $options['t3']; 
} 
?> 
10

आप कच्चे PHP का उपयोग करके ऐसा नहीं कर सकते हैं। आप की तरह कुछ की कोशिश कर सकते हैं:

function test($var1 = null, $var2 = null){ 
    if($var1 == null) $var1 = 'default1'; 
    if($var2 == null) $var2 = 'default2'; 
} 

और फिर डिफ़ॉल्ट चर के पहचानकर्ता के रूप में null के साथ, अपने फ़ंक्शन को कॉल करें। आप डिफ़ॉल्ट मानों के साथ एक सरणी का भी उपयोग कर सकते हैं, जो एक बड़ी पैरामीटर सूची के साथ आसान होगा।

इससे भी बेहतर है कि आप सभी से बचें और अपने डिज़ाइन को थोड़ा सा पुनर्विचार करें।

0

आप की तरह समारोह निर्धारित कर सकते हैं:

function grafico($valores,$img_width=false,$img_height=false,$titulo="title"){ 
    if ($img_width===false){$img_width=450;} 
    if ($img_height===false){$img_height=300;} 
    ... 
    } 

और स्थायी पैरामीटर या एक या "गलत" के साथ कई बदले बिना यह करने के लिए कॉल:

grafico($values); 
grafico($values,300); 
grafico($values,false,400); 
grafico($values,false,400,"titleeee");