Learn More

PHP in Hindi | Pass by value vs reference

इस tutorial में, हम PHP pass by value vs pass by reference के बारे में सीखेंगे ।जैसे की आप जानते ही होंगे की किसी भी प्रोग्रामिंग language को सिखने का बेस(base) C प्रोग्रामिंग हैं इस से पहले आपने C programming सीखी होगी । C प्रोग्रामिंग में, आपने लोकल स्कोप(local scope) और ग्लोबल स्कोप(global scope) सीखे हुए होंगे ।

Pass by value और pass by reference इस लोकल और ग्लोबल स्कोप पर निर्भर करता है। लोकल स्कोप में, यदि आपने फ़ंक्शन के अंदर वेरिएबल को डिफाइन किया है, तो आप फ़ंक्शन के बाहर वेरिएबल का उपयोग नहीं कर सकते हैं। Local scope में, यदि आपने फ़ंक्शन के अंदर किसी भी वेरिएबल को परिभाषित(define) किया है, तो आप फंक्शन के बहरा बिलकुल भी use नहीं कर सकते क्युकी तब आपको एक error मिलेगी की undefined वेरिएबल । लेकिंग यदि ग्लोबल स्कोप में कोई वेरिएबल define हुआ हैं तो आप entire (पूरी) PHP स्क्रिप्ट(script) में कही भी यूज कर सकते हैं तब आपको कोई भी undefined की error नहीं मिलेगी तो ये लोकल स्कोप और ग्लोबल स्कोप होते हैं ।

पिछले tutorial में हमने user defined functions के बारे में सीखा था वहां पर हमने फंक्शन बनाये थे और arguments के साथ भी function बनाया था । pass by value में arguments लोकल रूप(locally) से प्रभावित(effects) करते हैं जबकि pass by value में, arguments ग्लोबल रूप में effect डालते हैं । साधारण Hindi भाषा में कहे तो pass by value लोकल स्कोप में आते हैं जो की सिर्फ लोकल डिफाइन करके और लोकल ही यूज की जा सकती हैं जबकि pass by reference ग्लोबल स्कोप में आते हैं जिसे हम entire PHP script में यूज कर सकते हैं ।ये सब आपको example से समझ आजायेगा ।

Pass by Value in PHP

Pass by Value सिर्फ एक तकनीक(technique) है जिसमें हम arguments पास करते हैं।चलिए के उदाहरण से सीखते हैं । हम एक foreach loop के माध्यम से pass by value सीखते हैं। सबसे पहले हम एक फंक्शन बनाते हैं । जिसमें हम एक array बनाते हैं और वेरिएबल को एक फंक्शन के अंदर एक argument के रूप में पास करते हैं। pass by value में arguments locally effect करते हैं चलिए example से सीखते हैं ।

Example

<?php
function pass_by_value() {
}
$result = array(1,2,3,4);
pass_by_value($result);
foreach ($result as $row) {
  print "
$row"; } ?>
Run

ऊपर दिए गए उदाहरण में, हम pass_by_value() फ़ंक्शन बनाया हैं । फंक्शन के अंदर ही हमने एक array और उसमे items स्टोर किये । उसके बाद array को एक variable में स्टोर कराया हैं। वेरिएबल में स्टोर करने के बाद हमने फंक्शन मे argument के रूप में पास किया हैं उसके बाद foreach loop में use किया हैं और वैल्यूज प्रिंट कराई हैं । यहाँ पर ये सब लोकल एक फंक्शन ब्लॉक में हो रहा हैं अगर हम array को बाहर बना कर foreach लूप में array वेरिएबल को यूज करे तब ये error देगा क्युकी हम array को बहार डिफाइन किये हैं और array को फंक्शन के अंदर यूज किया हैं यदि वेरिएबल ग्लोबल होता तब error नहीं आती पर यहाँ पर लोकल स्कोप हैं तो error आएगी । default रूप से आर्गुमेंट pass by value में होता हैं ।

Pass by reference

PHP pass by reference में, arguments ग्लोबली प्रभावित(effect) करते हैं । किसी भी argument variable को pass by reference बनाने के लिए & sign का यूज किया जाता हैं । pass by reference में argument locally use किये जा सकते हैं जबकि pass by reference में arguments globally use किये जा सकते हैं ।Pass by reference बनाने के लिए हमें & sign का use करना पड़ता हैं तब वो आर्गुमेंट ग्लोबली काम करता हैं । चलिए pass by value vs reference दोनों के लिए एक साथ उदाहरण बनाते हैं ।

Pass by value vs reference example

नीचे दिए गए उदाहरण में, हम पहले आर्गुमेंट को pass by value के रूप में पास करते हैं। उसके बाद हम वेरिएबल को as reference pass करने के लिए वेरिएबल से पहले & sign का use करते हैं ।, चलिए एक example में pass by value और pass by reference का use करते हैं ।

Example

<?php
function func_value($val)
{
	$val=1000;   
	echo 'value val: '.$val.'
'; } $n1=30; func_value($n1); echo '
n1='.$n1.'
'; function func_ref(&$val) ///pass by reference { $val=1000; echo ' Reference val:'.$val.'
'; } $n1=30; func_ref($n1); echo '
n1='.$n1.'
'; ?>
Run

ऊपर दिए गए उदहारण में सबसे पहले हमने आर्गुमेंट को as variable के पास किया हैं । यदि हम फ़ंक्शन के अंदर वेरिएबल का value प्रदर्शित(display) करते हैं, तो यह value लेता है और फ़ंक्शन के बाहर वैल्यू नहीं लेता है। इसी तरह, फ़ंक्शन में argument as reference के रूप में पास किया हैं ।यहां, हम फ़ंक्शन के बाहर वेरिएबल वैल्यू प्रदर्शित(display) कर सकते हैं जो फ़ंक्शन के अंदर डिफाइन किया गया है।

इसलिये! pass by value लोकल स्कोप पर निर्भर करता है और pass by reference ग्लोबल स्कोप पर निर्भर करता है।

Recommended Posts:-