2008-08-29 15 views
127

PHP पैरामीटर में, वैकल्पिक पैरामीटर के साथ फ़ंक्शंस के लिए वाक्यविन्यास दिखाने के लिए, वे आश्रित वैकल्पिक पैरामीटर के प्रत्येक सेट के चारों ओर ब्रैकेट का उपयोग करते हैं। उदाहरण के लिए, date() समारोह के लिए, पुस्तिका में लिखा है:आप php में वैकल्पिक तर्क कैसे बनाते हैं?

string date (string $format [, int $timestamp = time() ]) 

कहाँ $timestamp एक वैकल्पिक पैरामीटर है, और जब time() समारोह द्वारा दिया गया मान को खाली यह चूक छोड़ दिया है।

PHP में कस्टम फ़ंक्शन को परिभाषित करते समय आप इस तरह के वैकल्पिक पैरामीटर बनाने के बारे में कैसे जाते हैं?

उत्तर

180

बहुत मैनुअल की तरह, मानकों की अपनी परिभाषा में एक बराबर (=) पर हस्ताक्षर का उपयोग करें:

function dosomething($var1, $var2, $var3 = 'somevalue'){ 
    // Rest of function here... 
} 
12

वैकल्पिक तर्क एक डिफ़ॉल्ट मान दे।

function date ($format, $timestamp='') { 
} 
18

कुछ नोट है कि मैं भी उपयोगी पाया:

  • सही पक्ष पर अपने मूलभूत मूल्यों रखें।

    function whatever($var1, $var2, $var3="constant", $var4="another") 
    
  • तर्क का डिफ़ॉल्ट मान निरंतर अभिव्यक्ति होना चाहिए। यह एक चर या एक समारोह कॉल नहीं हो सकता है।

35

तर्क का डिफ़ॉल्ट मान एक निरंतर अभिव्यक्ति होना चाहिए। यह एक चर या एक समारोह कॉल नहीं हो सकता है।

आप इस कार्यक्षमता लेकिन जरूरत है:

function foo($foo, $bar = false) 
{ 
    if(!$bar) 
    { 
     $bar = $foo; 
    } 
} 

मान लिया जाये कि $bar निश्चित रूप से एक बूलियन होने की उम्मीद नहीं है।

+1

हालांकि, यह मूल्यांकन करेगा कि 0 या "झूठी" $ बार में पारित किया गया था। – Tyzoid

+24

नल एक बेहतर डिफ़ॉल्ट है। – Kzqai

+1

$ bar नहीं होना चाहिए! == झूठी भी काम करता है? – DooMMasteR

4

तारीख समारोह कुछ इस तरह परिभाषित किया जाएगा:

function date($format, $timestamp = null) 
{ 
    if ($timestamp === null) { 
     $timestamp = time(); 
    } 

    // Format the timestamp according to $format 
} 

आमतौर पर, आप इस तरह डिफ़ॉल्ट मान रखा जाएगा:

function foo($required, $optional = 42) 
{ 
    // This function can be passed one or more arguments 
} 

हालांकि, केवल शाब्दिक मान्य सामान्य तर्क हैं, यही कारण है कि मैंने null को पहले उदाहरण में डिफ़ॉल्ट तर्क के रूप में उपयोग किया, $timestamp = time(), और इसे शून्य जांच के साथ संयुक्त किया। साहित्य में सरणी (array() या []), बूलियन, संख्याएं, तार, और null शामिल हैं।

5

यदि आपको नहीं पता कि कितने विशेषताओं को संसाधित करने की आवश्यकता है, तो आप PHP 5.6 (see full documentation here) में प्रस्तुत विविधता तर्क सूची टोकन (...) का उपयोग कर सकते हैं।

सिंटेक्स:

function <functionName> ([<type> ]...<$paramName>) {} 

उदाहरण के लिए:

function someVariadricFunc(...$arguments) { 
    foreach ($arguments as $arg) { 
    // do some stuff with $arg... 
    } 
} 

someVariadricFunc();   // an empty array going to be passed 
someVariadricFunc('apple'); // provides a one-element array 
someVariadricFunc('apple', 'pear', 'orange', 'banana'); 

आप देख सकते हैं, इस टोकन मूल रूप से एक सरणी है, जो आप अपनी पसंद के किसी भी तरह से संसाधित कर सकते हैं करने के लिए सभी मापदंडों बदल जाता है।

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