परिचय
एक फ़ंक्शन में इसके बॉडी में अंतिम स्टेटमेंट के रूप में return हो सकता है हालांकि यह अनिवार्य नहीं है। जब किसी फ़ंक्शन को कॉल किया जाता है, तो इसके बॉडी ब्लॉक में स्टेटमेंट्स निष्पादित करने के बाद प्रोग्राम का कंट्रोल कॉलिंग वातावरण में वापस आ जाता है - चाहे फ़ंक्शन ब्लॉक में अंतिम स्टेटमेंट return हो या न हो। रिटर्न स्टेटमेंट की अनुपस्थिति में, कॉलर को NULL मान लौटाया जाता है। यदि रिटर्न स्टेटमेंट में एक एक्सप्रेशन क्लॉज होता है, तो एक्सप्रेशन का मान भी कंट्रोल के अलावा लौटाया जाता है। फ़ंक्शन केवल एक मान लौटा सकता है जो स्केलर प्रकार, सरणी, या ऑब्जेक्ट हो सकता है। लौटाया गया मान बाद में प्रोसेसिंग के लिए किसी वेरिएबल को असाइन किया जा सकता है।
रिटर्न के साथ फ़ंक्शन
उदाहरण 1: दो पूर्णांकों का योग लौटाना
<?php
function add($var1, $var2) {
$var3 = $var1 + $var2;
return $var3;
}
$x = 10;
$y = 20;
$z = add($x, $y);
echo "addition=$z";
?>
आउटपुट
addition=30
सरणी लौटाना
फ़ंक्शन केवल एक मान लौटा सकता है। हालांकि, कई मानों की सरणी लौटाई जा सकती है। निम्न उदाहरण दो नंबरों को एक फ़ंक्शन में पास करता है जो जोड़, घटाव, गुणा और भाग की सरणी लौटाता है।
उदाहरण 2: एकाधिक परिणामों की सरणी लौटाना
<?php
function result($var1, $var2) {
$r1 = $var1 + $var2;
$r2 = $var1 - $var2;
$r3 = $var1 * $var2;
$r4 = $var1 / $var2;
return array("add" => $r1, "sub" => $r2, "multiply" => $r3, "division" => $r4);
}
$x = 10;
$y = 20;
$arr = result($x, $y);
foreach ($arr as $k => $v) {
echo $k . "->" . $v . "\n";
}
?>
आउटपुट
add->30 sub->-10 multiply->200 division->0.5
रेफरेंस द्वारा रिटर्न (Return by Reference)
जैसे आर्गुमेंट्स को रेफरेंस द्वारा पास किया जा सकता है, एक फ़ंक्शन रेफरेंस द्वारा भी रिटर्न कर सकता है। उस उद्देश्य के लिए, फ़ंक्शन के नाम को $ सिंबल से उपसर्गित किया जाना चाहिए। इसके अलावा, फ़ंक्शन कॉल में & सिंबल भी दिया जाना चाहिए।
निम्न उदाहरण में, myfunction() में एक स्टैटिक सरणी है। इसके तत्वों में से एक को रेफरेंस द्वारा लौटाया जाता है और एक वेरिएबल में स्वीकार किया जाता है। वेरिएबल का मान तब संशोधित किया जाता है और वही फ़ंक्शन फिर से कॉल किया जाता है। फ़ंक्शन में सरणी को अब उसका मान बदला हुआ दिखाना चाहिए।
उदाहरण 3: रेफरेंस द्वारा रिटर्न
<?php
function &myfunction() {
static $arr = [1, 2, 3, 4, 5];
echo "array elements: ";
foreach ($arr as $i) {
echo "$i ";
}
echo "\n";
return $arr[2];
}
$var = &myfunction();
echo "returned by reference : $var\n";
$var = 100;
$var = &myfunction();
?>
आउटपुट
array elements: 1 2 3 4 5 returned by reference : 3 array elements: 1 2 100 4 5
उदाहरण 4: swap() फ़ंक्शन में रेफरेंस द्वारा रिटर्न
$x और $y वेरिएबल्स के मान swap() फ़ंक्शन में अदला-बदली किए जाते हैं। चूंकि वेरिएबल्स रेफरेंस द्वारा पास किए जाते हैं, फ़ंक्शन के बाहर भी वेरिएबल्स संशोधित मान दिखाते हैं।
रिटर्न टाइप हिंट्स (Return Type Declarations)
PHP 7 से, आप लौटाए गए वेरिएबल/ऑब्जेक्ट के लिए टाइप हिंट्स निर्दिष्ट कर सकते हैं, जैसे आर्गुमेंट्स के लिए प्रकार घोषित करना संभव है। रिटर्न टाइप के लिए भी सभी स्केलर प्रकार, क्लास और सरणी उपयोग की जा सकती हैं।
सिंटैक्स
// रिटर्न मान के लिए टाइप हिंट्स के साथ फ़ंक्शन परिभाषित करें
function myfunction($arg1, $arg2): type {
..
..
return $var;
}
रिटर्न वेरिएबल के लिए फ़ंक्शन घोषणा में टाइप हिंट्स प्रदान करने के लिए सभी मानक PHP डेटा प्रकार जिनमें स्केलर प्रकार, सरणी, क्लास/इंटरफ़ेस, इटरेबल और ऑब्जेक्ट शामिल हैं, वैध प्रकार हैं।
उदाहरण 5: फ्लोट रिटर्न टाइप हिंट
<?php
function add($x, $y): float {
return $x + $y;
}
$var = add(5, 8);
var_dump($var);
?>
आउटपुट
float(13)
उदाहरण 6: strict_types के साथ इंट रिटर्न टाइप
strict_types=1 के साथ declare स्टेटमेंट का उपयोग डेटा प्रकारों के बलपूर्वक रूपांतरण को रोकेगा।
<?php
declare (strict_types = 1);
function add($x, $y): int {
return $x + $y;
}
$var = add(5.5, 8.8);
var_dump($var);
?>
आउटपुट
PHP Fatal error: Uncaught TypeError: Return value of add() must be of the type integer, float returned