परिचय
PHP में बड़ी संख्या में बिल्ट-इन फ़ंक्शंस हैं जैसे कि गणितीय, स्ट्रिंग, दिनांक, सरणी फ़ंक्शंस आदि। विशिष्ट आवश्यकता के अनुसार किसी फ़ंक्शन को परिभाषित करना भी संभव है। ऐसे फ़ंक्शन को उपयोगकर्ता परिभाषित फ़ंक्शन कहा जाता है।
एक फ़ंक्शन बयानों का एक पुन:प्रयोज्य ब्लॉक है जो एक विशिष्ट कार्य करता है। इस ब्लॉक को फंक्शन कीवर्ड से परिभाषित किया गया है और इसे एक ऐसा नाम दिया गया है जो एक अल्फाबेट या अंडरस्कोर से शुरू होता है। इस समारोह को कार्यक्रम के भीतर कहीं से भी कितनी भी बार बुलाया जा सकता है।
सिंटैक्स
//define a function function myfunction($arg1, $arg2, ... $argn) { statement1; statement2; .. .. return $val; } //call function $ret=myfunction($arg1, $arg2, ... $argn);
फ़ंक्शन को वैकल्पिक लेकिन किसी भी संख्या में तर्कों के साथ परिभाषित किया जा सकता है। हालाँकि, कॉल करते समय समान संख्या में तर्क दिए जाने चाहिए। फ़ंक्शन के शरीर में कोई भी मान्य PHP कोड हो सकता है, जैसे कि सशर्त, लूप आदि (यहां तक कि अन्य फ़ंक्शन या कक्षाएं फ़ंक्शन के अंदर परिभाषित की जा सकती हैं)। ब्लॉक में स्टेटमेंट निष्पादित करने के बाद, प्रोग्राम कंट्रोल उस स्थान पर वापस चला जाता है जहां से इसे वापस बुलाया गया था, भले ही फंक्शन ब्लॉक के अंतिम स्टेटमेंट को रिटर्न के रूप में मौजूद न हो। रिटर्न स्टेटमेंट के सामने एक एक्सप्रेशन कॉलिंग एनवायरनमेंट को अपना मान लौटाता है।
उपयोगकर्ता परिभाषित फ़ंक्शन उदाहरण
निम्नलिखित उदाहरण में एक usr परिभाषित फ़ंक्शन की परिभाषा और कॉल को दिखाता है sayhello()
उदाहरण
<?php //function definition function sayHello(){ echo "Hello World!"; } //function call sayHello(); ?>
कमांड लाइन से चलाने पर यह स्क्रिप्ट निम्नलिखित परिणाम देगी -
आउटपुट
Hello World!
तर्कों के साथ कार्य करें
निम्नलिखित उदाहरण में, एक फ़ंक्शन को दो औपचारिक तर्कों के साथ परिभाषित किया गया है
उदाहरण
<?php function add($arg1, $arg2){ echo $arg1+$arg2 . "\n"; } add(10,20); add("Hello", "World"); ?>
आउटपुट
यह निम्नलिखित परिणाम देगा। -
30 PHP Warning: A non-numeric value encountered in line 3
दूसरी कॉल में, दो स्ट्रिंग मान फ़ंक्शन तर्क के रूप में दिए जाते हैं। चूंकि PHP स्ट्रिंग्स के लिए + ऑपरेटर का समर्थन नहीं करता है, इसलिए एक चेतावनी उत्सर्जित होती है।
फ़ंक्शन वापसी
निम्नलिखित उदाहरण में उपयोगकर्ता परिभाषित फ़ंक्शन प्रदान किए गए तर्कों को संसाधित करता है और कॉलिंग परिवेश के लिए एक मान को वापस करता है
उदाहरण
<?php function add($arg1, $arg2){ return $arg1+$arg2; } $val=add(10,20); echo "addition:". $val. "\n"; $val=add("10","20"); echo "addition: $val"; ?>
आउटपुट
यह निम्नलिखित परिणाम देगा। -
addition:30 addition:30
दूसरी कॉल में, भले ही तर्क स्ट्रिंग हों, PHP उन्हें पूर्णांक में जोड़ देता है और जोड़ देता है
डिफ़ॉल्ट तर्क मान के साथ कार्य करें
किसी फ़ंक्शन को परिभाषित करते समय, तर्क का एक डिफ़ॉल्ट मान असाइन किया जा सकता है। यदि फ़ंक्शन को कॉल करते समय इस तरह के एगमेंट को मान असाइन नहीं किया गया है, तो इस डिफ़ॉल्ट का उपयोग फ़ंक्शन के अंदर प्रसंस्करण के लिए किया जाएगा। निम्नलिखित उदाहरण में, एक फ़ंक्शन को डिफ़ॉल्ट मान वाले तर्क के साथ परिभाषित किया गया है
उदाहरण
<?php function welcome($user="Guest"){ echo "Hello $user\n"; } //overrides default welcome("admin"); //uses default welcome(); ?>
आउटपुट
यह निम्नलिखित परिणाम देगा। -
Hello admin Hello Guest
दूसरी कॉल में, फ़ंक्शन को बिना पासिंग वैल्यू के कॉल किया जाता है। इस मामले में, उपयोगकर्ता तर्क अपना डिफ़ॉल्ट मान लेता है।
तर्कों की परिवर्तनीय संख्या के साथ कार्य करें
तर्कों की परिवर्तनीय संख्या प्राप्त करने की क्षमता वाले फ़ंक्शन को परिभाषित करना संभव है। फ़ंक्शन परिभाषा में औपचारिक तर्क का नाम ... . द्वारा उपसर्ग किया गया है टोकन। निम्नलिखित उदाहरण में ऐड () फ़ंक्शन है जो तर्क के रूप में दिए गए नंबरों की एक सूची जोड़ता है
उदाहरण
<?php function add(...$numbers){ $ttl=0; foreach ($numbers as $num){ $ttl=$ttl+$num; } return $ttl; } $total=add(10,15,20); echo "total= $total\n"; echo "total=". add(1,2,3,4,5). "\n"; ?>
आउटपुट
यह निम्नलिखित परिणाम देगा। -
total= 45 total=15
फ़ंक्शन को दिए गए तर्कों की सूची func_get_args() की सहायता से प्राप्त करना भी संभव है समारोह। हम पारित तर्कों की सूची में प्रत्येक मान को पार करने के लिए एक PHP लूप चला सकते हैं। उस स्थिति में फ़ंक्शन परिभाषा में औपचारिक तर्क नहीं होता है।
उदाहरण
<?php function add(){ $numbers=func_get_args(); $ttl=0; foreach ($numbers as $num){ $ttl=$ttl+$num; } return $ttl; } $total=add(10,15,20); echo "total= $total\n"; echo "total=". add(1,2,3,4,5). "\n"; ?>
आउटपुट
यह निम्नलिखित परिणाम देगा। -
total= 45 total=15
किसी अन्य फ़ंक्शन के अंतर्गत कार्य करें
एक फ़ंक्शन को दूसरे फ़ंक्शन के बॉडी ब्लॉक के अंदर परिभाषित किया जा सकता है। हालांकि, बाहरी फ़ंक्शन को लागू करने से पहले आंतरिक फ़ंक्शन को कॉल नहीं किया जा सकता है।
उदाहरण
<?php function hello(){ echo "Hello\n"; function welcome(){ echo "Welcome to TutorialsPoint\n"; } } //welcome(); hello(); welcome(); ?>
हैलो से पहले wlcome () कॉल करने के लिए कमेंट को हटा दें। निम्नलिखित त्रुटि संदेश प्रोग्राम को रोक देता है -
Fatal error: Uncaught Error: Call to undefined function welcome()
आउटपुट
लाइन पर टिप्पणी करें और फिर से दौड़ें
Hello Welcome to TutorialsPoint
पुनरावर्ती फ़ंक्शन
एक फ़ंक्शन जो स्वयं को कॉल करता है उसे रिकर्सिव फ़ंक्शन कहा जाता है। बिना शर्त कॉल करने से अनंत लूप बन जाता है और स्टैक फुल होने के कारण मेमोरी एरर से बाहर हो जाता है। निम्नलिखित प्रोग्राम फैक्टोरियल () फ़ंक्शन को पुनरावर्ती रूप से कॉल करता है
उदाहरण
<?php function factorial($n){ if ($n < 2) { return 1; } else { return ($n * factorial($n-1)); } } echo "factorial(5) = ". factorial(5); ?>
आउटपुट
factorial(5) = 120