परिचय
PHP में एक फ़ंक्शन को तर्क के रूप में पर्यावरण/स्क्रिप्ट को कॉल करने से इनपुट स्वीकार करने के लिए परिभाषित किया जा सकता है। ये तर्क फ़ंक्शन के नाम के सामने कोष्ठक के अंदर अल्पविराम से अलग सूची के रूप में दिए गए हैं। ध्यान दें कि किसी फ़ंक्शन को कॉल करते समय, उसे उतने ही तर्क दिए जाने चाहिए।
PHP मान, संदर्भ, डिफ़ॉल्ट मान के साथ तर्कों और तर्कों की चर संख्या को पारित करके फ़ंक्शन को कॉल करने का समर्थन करता है।
तर्कों के साथ कार्य करें
निम्नलिखित उदाहरण में, एक फ़ंक्शन को दो औपचारिक तर्कों के साथ परिभाषित किया गया है। जब इस फ़ंक्शन को मान द्वारा तर्क पारित करके कहा जाता है। फ़ंक्शन के तर्क इसके स्थानीय चर बन जाते हैं। इसलिए, किसी फ़ंक्शन के अंदर तर्क के मान में कोई भी परिवर्तन इसके बाहर प्रतिबिंबित नहीं होता है।
यहां, फ़ंक्शन के अंदर $x का मान बदल दिया जाता है, लेकिन यदि हम कॉल टू फंक्शन के बाद इसके मूल्य की जांच करते हैं, तो यह नहीं बदला है
उदाहरण
<?php function add($x, $y){ $x= $x+$y ; echo $x . "\n"; } $x=10; $y=20; add($x,$y); //outside function $x has previous value. echo $x; ?>
आउटपुट
यह निम्नलिखित परिणाम देगा। -
30 10
कार्य करने के लिए सरणी पास करना
निम्नलिखित उदाहरण में, ऐड () फ़ंक्शन को सरणी को तर्क के रूप में प्राप्त करने के लिए परिभाषित किया गया है। फ़ंक्शन के अंदर, सरणी तत्वों को फ़ोरैच लूप का उपयोग करके ट्रैवर्स किया जाता है
उदाहरण
<?php function add($arr){ $sum=0; foreach ($arr as $i){ $sum+=$i; } echo "sum = " .$sum; } add(array(1,2,3)); ?>
आउटपुट
यह निम्नलिखित परिणाम देगा। -
sum = 6
संदर्भ द्वारा तर्क पारित करना
मान द्वारा फ़ंक्शन के तर्कों को मान पास किए जाते हैं। इसलिए, फ़ंक्शन के अंदर तर्क के मान में परिवर्तन इसके बाहर प्रतिबिंबित नहीं होते हैं। जब तर्कों को संदर्भ द्वारा पारित किया जाता है, तो तर्क के बाहर के मूल्य में परिवर्तन किए जाते हैं।
संदर्भ द्वारा मूल्य प्राप्त करने के लिए, तर्क का नाम $ प्रतीक से पहले होना चाहिए
उदाहरण
<?php function swap(&$x, &$y){ $t=$x; $x=$y; $y=$t; echo "inside function x=$x y=$y\n"; } $x=5; $y=7; echo "before calling function x=$x y=$y\n"; swap($x, $y); echo "after calling function x=$x y=$y\n"; ?>
आउटपुट
यह निम्नलिखित परिणाम देगा। -
before calling function x=5 y=7 inside function x=7 y=5 after calling function x=7 y=5
चर $x और $y के मान स्वैप () फ़ंक्शन में आपस में बदल दिए जाते हैं। चूंकि, चर संदर्भ द्वारा पारित किए जाते हैं, चर फ़ंक्शन के बाहर भी संशोधित मान दिखाते हैं
संकेत टाइप करें (घोषणाएं टाइप करें)
PHP वास्तव में एक गतिशील रूप से टाइप की जाने वाली भाषा है। इसलिए, एक वेरिएबल को उसके प्रकार (जैसे C/C++ या Java में) के साथ घोषित करना आवश्यक नहीं है। हालांकि, किसी फ़ंक्शन में तर्कों की घोषणा प्रकार पार्सर को फ़ंक्शन को दिए गए गलत डेटा प्रकारों का पता लगाने की अनुमति देता है।
सिंटैक्स
//define a function with type hints function myfunction(type $arg1, type $arg2){ .. .. }
स्केलर प्रकार, सरणी, वर्ग/इंटरफ़ेस, चलने योग्य और ऑब्जेक्ट सहित सभी मानक PHP डेटा प्रकार फ़ंक्शन घोषणा में प्रकार संकेत प्रदान करने के लिए मान्य प्रकार हैं
उदाहरण
<?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 (int $x, int $y){ $z=$x+$y; echo "addition=$z\n"; } add(10,20); add(5.55, 6.66); ?>
आउटपुट
यह निम्नलिखित परिणाम देगा। -
addition=30 addition=11
ध्यान दें कि ऐड () फ़ंक्शन के लिए दूसरी कॉल में, फ़्लोट्स को तर्क के रूप में दिया जाता है, लेकिन फिर भी कोई त्रुटि/चेतावनी प्रदर्शित नहीं होती है। ऐसा इसलिए है क्योंकि PHP आंतरिक रूप से अतिरिक्त प्रदर्शन करने के लिए पूर्णांक में तैरती है। ऐसे स्वचालित प्रकार के रूपांतरण को रोकने के लिए, घोषणा . का उपयोग करें सख्त_प्रकार=1 . के साथ निर्माण करें
उदाहरण
<?php declare(strict_types=1); function add (int $x, int $y){ $z=$x+$y; echo "addition=$z\n"; } add(10,20); add(5.55, 6.66); ?>
जोड़ने के लिए दूसरी कॉल () फ़ंक्शन अब अपवाद फेंक देगा -
आउटपुट
addition=30 PHP Fatal error: Uncaught TypeError: Argument 1 passed to add() must be of the type integer, float given