Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> PHP

PHP पासिंग बाय रेफरेंस (Passing by Reference) - फ़ंक्शन आर्गुमेंट्स, सरणी, ऑब्जेक्ट


परिचय

PHP में, फ़ंक्शन के आर्गुमेंट्स को मान द्वारा या रेफरेंस द्वारा पास किया जा सकता है। डिफ़ॉल्ट रूप से, वास्तविक आर्गुमेंट्स के मान औपचारिक आर्गुमेंट्स को मान द्वारा पास किए जाते हैं जो फ़ंक्शन के अंदर स्थानीय वेरिएबल्स बन जाते हैं। इसलिए, इन वेरिएबल्स में संशोधन वास्तविक आर्गुमेंट वेरिएबल के मान को नहीं बदलता।

जब आर्गुमेंट्स रेफरेंस द्वारा पास किए जाते हैं, तो औपचारिक आर्गुमेंट के मान में परिवर्तन वास्तविक आर्गुमेंट वेरिएबल में प्रतिबिंबित होता है क्योंकि पूर्व बाद वाले का रेफरेंस होता है। इस प्रकार पास बाय रेफरेंस तंत्र ग्लोबल स्पेस में डेटा को अप्रत्यक्ष रूप से मैनिपुलेट करने में मदद करता है। यह इस तथ्य को दूर करने में भी मदद करता है कि एक फ़ंक्शन केवल एक वेरिएबल लौटा सकता है।

मान द्वारा पासिंग (Pass by Value)

उदाहरण 1: मान द्वारा पासिंग - स्वैप काम नहीं करता

निम्न उदाहरण में, दो वेरिएबल्स को swap() फ़ंक्शन में पास किया जाता है। भले ही स्वैपिंग तंत्र फ़ंक्शन के अंदर होता है, यह पास किए गए वेरिएबल्स के मानों को नहीं बदलता।

<?php 
function swap($arg1, $arg2) { 
    echo "inside function before swapping: arg1=$arg1 arg2=$arg2\n"; 
    $temp = $arg1; 
    $arg1 = $arg2; 
    $arg2 = $temp; 
    echo "inside function after swapping: arg1=$arg1 arg2=$arg2\n"; 
} 
$arg1 = 10; 
$arg2 = 20; 
echo "before calling function : arg1=$arg1 arg2=$arg2\n"; 
swap($arg1, $arg2); 
echo "after calling function : arg1=$arg1 arg2=$arg2\n"; 
?>

आउटपुट

before calling function : arg1=10 arg2=20 
inside function before swapping: arg1=10 arg2=20 
inside function after swapping: arg1=20 arg2=10 
after calling function : arg1=10 arg2=20

रेफरेंस द्वारा पासिंग (Pass by Reference)

रेफरेंस द्वारा आर्गुमेंट्स प्राप्त करने के लिए, औपचारिक आर्गुमेंट के रूप में उपयोग किए जाने वाले वेरिएबल को & सिंबल से उपसर्गित किया जाना चाहिए। यह कॉल करने के लिए उपयोग किए गए वेरिएबल्स का रेफरेंस बनाता है। इसलिए, फ़ंक्शन के अंदर स्वैपिंग का परिणाम उन मूल वेरिएबल्स में भी प्रतिबिंबित होगा जिन्हें पास किया गया था।

उदाहरण 2: रेफरेंस द्वारा पासिंग - स्वैप काम करता है

<?php 
function swap(&$arg1, &$arg2) { 
    echo "inside function before swapping: arg1=$arg1 arg2=$arg2\n"; 
    $temp = $arg1; 
    $arg1 = $arg2; 
    $arg2 = $temp; 
    echo "inside function after swapping: arg1=$arg1 arg2=$arg2\n"; 
} 
$arg1 = 10; 
$arg2 = 20; 
echo "before calling function : arg1=$arg1 arg2=$arg2\n"; 
swap($arg1, $arg2); 
echo "after calling function : arg1=$arg1 arg2=$arg2\n"; 
?>

आउटपुट

before calling function : arg1=10 arg2=20 
inside function before swapping: arg1=10 arg2=20 
inside function after swapping: arg1=20 arg2=10 
after calling function : arg1=20 arg2=10

उदाहरण 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

उदाहरण 4: फ़ंक्शन को रेफरेंस द्वारा सरणी पास करना

<?php 
function arrfunction(&$arr) { 
    for ($i = 0; $i < 5; $i++) 
        $arr[$i] = $arr[$i] + 10; 
} 
$arr = [1, 2, 3, 4, 5]; 
arrfunction($arr); 
foreach ($arr as $i) echo $i . " "; 
?>

आउटपुट

11 12 13 14 15

उदाहरण 5: ऑब्जेक्ट और रेफरेंस

PHP में, ऑब्जेक्ट्स डिफ़ॉल्ट रूप से रेफरेंस द्वारा पास किए जाते हैं। जब ऑब्जेक्ट का रेफरेंस बनाया जाता है, तो इसका रेफरेंस $this के रूप में आर्गुमेंट के रूप में भी भेजा जाता है जो पहले ऑब्जेक्ट का रेफरेंस भी होता है।

<?php 
class test1 { 
    private $name; 
    function getname() { 
        return $this->name; 
    } 
    function setname($name) { 
        $this->name = $name; 
    } 
} 
$obj1 = new test1(); 
$obj2 = &$obj1; 
$obj1->setname("Amar"); 
echo "name: " . $obj2->getname(); 
?>

आउटपुट

name: Amar
  1. - PHP max() फ़ंक्शन - अधिकतम मान ढूंढना

    PHP का max() फ़ंक्शन **सरणी में सबसे बड़ा तत्व** या **दिए गए पैरामीटर्स में सबसे बड़ा मान** लौटाता है। यह min() का पूरक है और समान नियमों का पालन करता है। सिंटैक्स max(array $values): mixed // या max(mixed $value1, mixed $value2, ...): mixed पैरामीटर्स पैरामीटरविवरण $valuesसरणी (एकमात्र पैरामी

  1. - PHP log10() फ़ंक्शन - आधार-10 लघुगणक

    PHP का log10() फ़ंक्शन किसी संख्या का **आधार-10 लघुगणक (base-10 logarithm)** गणना करता है। इसे सामान्य या मानक लघुगणक भी कहते हैं। सिंटैक्स log10(float $arg): float पैरामीटर पैरामीटरविवरण $argवह संख्या जिसका आधार-10 लघुगणक चाहिए लौटाया गया मान $arg का आधार-10 लघुगणक (फ्लोट)। गणितीय संबंध l

  1. - PHP log() फ़ंक्शन - प्राकृतिक लघुगणक और मनमाना आधार

    PHP का log() फ़ंक्शन **प्राकृतिक लघुगणक (natural logarithm, आधार e)** या **निर्दिष्ट आधार** में लघुगणक गणना करता है। डिफ़ॉल्ट आधार यूलर संख्या M_E (≈2.718) है। सिंटैक्स log(float $arg, float $base = M_E): float पैरामीटर्स पैरामीटरविवरण $argवह मान जिसका लघुगणक चाहिए $baseआधार (डिफ़ॉल्ट M_E = प्