परिचय
PHP में, रेफरेंसेस (References) विभिन्न नामों से एक ही वेरिएबल सामग्री तक पहुँचने में सक्षम बनाते हैं। वे C/C++ में पॉइंटर्स की तरह नहीं हैं क्योंकि उनका उपयोग करके अंकगणितीय संक्रियाएँ करना संभव नहीं है। C/C++ में, वे वास्तविक मेमोरी पते हैं। PHP में इसके विपरीत, वे प्रतीक तालिका उपनाम (symbol table aliases) हैं। PHP में, वेरिएबल नाम और वेरिएबल सामग्री अलग हैं, इसलिए वही सामग्री अलग-अलग नामों से हो सकती है। एक रेफरेंस वेरिएबल मूल वेरिएबल को & साइन उपसर्ग करके बनाया जाता है। इसलिए $b = &$a का अर्थ है कि $b, $a का एक रेफरेंस वेरिएबल है।
रेफरेंस द्वारा असाइनमेंट (Assign By Reference)
उदाहरण 1: दो वेरिएबल्स एक ही मान को संदर्भित करते हैं
<?php $var1 = 10; $var2 = &$var1; echo "$var1 $var2\n"; $var2 = 20; echo "$var1 $var2\n"; ?>
आउटपुट
10 10 20 20
एक में मान परिवर्तन दूसरे में भी प्रतिबिंबित होगा।
यदि आप किसी अपरिभाषित वेरिएबल को रेफरेंस द्वारा असाइन, पास, या रिटर्न करते हैं, तो यह बन जाएगा। फ़ंक्शन के अंदर ग्लोबल घोषित वेरिएबल को रेफरेंस असाइन करना, रेफरेंस केवल फ़ंक्शन के अंदर दिखाई देगा। जब किसी मान को foreach स्टेटमेंट में रेफरेंस वाले वेरिएबल को असाइन किया जाता है, तो रेफरेंस भी संशोधित होते हैं।
उदाहरण 2: foreach में रेफरेंस संशोधन
<?php
$arr = [1, 2, 3, 4, 5];
$i = &$ref;
foreach ($arr as $i)
echo $i * $i, "\n";
echo "ref = " . $ref;
?>
आउटपुट
1 4 9 16 25 ref = 5
$ref का मान सरणी में अंतिम तत्व का मान संग्रहीत करता है।
उदाहरण 3: सरणी तत्वों के रूप में रेफरेंस
निम्न उदाहरण में, सरणी तत्व सरणी आरंभीकरण से पहले घोषित व्यक्तिगत वेरिएबल्स के रेफरेंस हैं। यदि तत्व संशोधित होता है, तो वेरिएबल का मान भी बदल जाता है।
<?php
$a = 10;
$b = 20;
$c = 30;
$arr = array(&$a, &$b, &$c);
for ($i = 0; $i < 3; $i++)
$arr[$i]++;
echo "$a $b $c";
?>
आउटपुट
11 21 31
$a, $b और $c के मान भी बढ़ जाते हैं।