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

PHP फ़ंक्शन आर्गुमेंट्स (Function Arguments) - मान, रेफरेंस, डिफ़ॉल्ट, वेरिएबल, टाइप हिंट्स


परिचय

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

PHP मान द्वारा पासिंग, रेफरेंस द्वारा पासिंग, डिफ़ॉल्ट मान वाले आर्गुमेंट्स और वेरिएबल संख्या में आर्गुमेंट्स पास करके फ़ंक्शन कॉल करने का समर्थन करता है।

आर्गुमेंट्स के साथ फ़ंक्शन

उदाहरण 1: मान द्वारा पासिंग (Pass by Value)

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

यहां, फ़ंक्शन के अंदर $x का मान बदल जाता है, लेकिन यदि हम फ़ंक्शन कॉल के बाद इसका मान जांचते हैं, तो यह नहीं बदला है।

<?php 
function add($x, $y) { 
    $x = $x + $y; 
    echo $x . "\n"; 
} 
$x = 10; 
$y = 20; 
add($x, $y); 

// फ़ंक्शन के बाहर $x का पिछला मान है।
echo $x; 
?>

आउटपुट

30 
10

उदाहरण 2: फ़ंक्शन में सरणी पास करना

<?php 
function add($arr) { 
    $sum = 0; 
    foreach ($arr as $i) { 
        $sum += $i; 
    } 
    echo "sum = " . $sum; 
} 
add(array(1, 2, 3)); 
?>

आउटपुट

sum = 6

रेफरेंस द्वारा आर्गुमेंट्स पास करना

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

रेफरेंस द्वारा मान प्राप्त करने के लिए, आर्गुमेंट के नाम को & सिंबल से उपसर्गित किया जाना चाहिए।

उदाहरण 3: रेफरेंस द्वारा पासिंग (Pass by Reference)

<?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

swap() फ़ंक्शन में $x और $y वेरिएबल्स के मान अदला-बदली किए जाते हैं। चूंकि वेरिएबल्स रेफरेंस द्वारा पास किए जाते हैं, फ़ंक्शन के बाहर भी वेरिएबल्स संशोधित मान दिखाते हैं।

उदाहरण 4: सरणी तत्वों के रूप में रेफरेंस

निम्न उदाहरण में, सरणी तत्व व्यक्तिगत वेरिएबल्स के रेफरेंस हैं जो सरणी आरंभीकरण से पहले घोषित किए गए थे। यदि तत्व संशोधित होता है, तो वेरिएबल का मान भी बदल जाता है।

<?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

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

<?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

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

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

टाइप हिंट्स (Type Declarations)

PHP वास्तव में एक डायनामिकली टाइप्ड भाषा है। इसलिए, वेरिएबल को उसके प्रकार के साथ घोषित करना आवश्यक नहीं है (जैसा कि C/C++ या Java में)। हालांकि, फ़ंक्शन में आर्गुमेंट्स की टाइप डिक्लेरेशन पार्सर को फ़ंक्शन को पास किए गए गलत डेटा प्रकारों का पता लगाने की अनुमति देती है।

सिंटैक्स

// टाइप हिंट्स के साथ फ़ंक्शन परिभाषित करें
function myfunction(type $arg1, type $arg2) { 
    .. 
    .. 
}

फ़ंक्शन घोषणा में टाइप हिंट्स प्रदान करने के लिए सभी मानक PHP डेटा प्रकार जिनमें स्केलर प्रकार, सरणी, क्लास/इंटरफ़ेस, इटरेबल और ऑब्जेक्ट शामिल हैं, वैध प्रकार हैं।

उदाहरण 7: वेरिएबल आर्गुमेंट्स के साथ टाइप हिंट (मूल उदाहरण में त्रुटि सुधार)

<?php 
function add(int ...$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

उदाहरण 8: int टाइप हिंट के साथ सख्त प्रकार जांच

<?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

ध्यान दें कि add() फ़ंक्शन के दूसरे कॉल में, फ्लोट्स को आर्गुमेंट्स के रूप में दिया गया है, लेकिन फिर भी कोई त्रुटि/चेतावनी प्रदर्शित नहीं होती। ऐसा इसलिए है क्योंकि PHP आंतरिक रूप से जोड़ करने के लिए फ्लोट को पूर्णांक में बलपूर्वक परिवर्तित करता है। ऐसे स्वचालित प्रकार रूपांतरण को रोकने के लिए, declare कंस्ट्रक्ट के साथ strict_types=1 का उपयोग करें।

उदाहरण 9: strict_types=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); 
?>

add() फ़ंक्शन का दूसरा कॉल अब अपवाद फेंकेगा:

आउटपुट

addition=30 
PHP Fatal error: Uncaught TypeError: Argument 1 passed to add() must be of the type integer, float given
  1. - PHP min() फ़ंक्शन - न्यूनतम मान ढूंढना

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

  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