payment by upi: sinhamit@icici or payment by bank account name: amit kumar sinha, account number: 2646728782 IFSC code: KKBK0005660 SWIFT: KKBKINBB

Please support if you like my work by payment through upi: sinhamit@icici or payment by bank

account name: Amit Kumar Sinha,
account number: 2646728782
IFSC code: KKBK0005660
SWIFT: KKBKINBB


Conditional Blocks   in Category: पीएचपी   by amit

🕙 Posted on 2023-05-31 at 10:08:16


नियंत्रण संरचनाएं (Control Structures)

    अब तक, आपने अलग-अलग डेटा-प्रकारों के सिंगल-लाइन या मल्टी-लाइन लिटरल (literals) देखे हैं, जिन्हें या तो एक वेरिएबल नाम को असाइन (निर्दिष्ट) किया गया है, या पूर्व-निर्धारित फ़ंक्शंस, भाषा-निर्माण (language const­ructs), आदि द्वारा कुछ ऑपरेशन किए गए हैं। हालाँकि, कोई भी PHP स्क्रिप्ट कथनों (statements) की एक श्रृंखला से बनी है। कथनों की इस श्रृंखला को एक ब्लॉक कहा जाता है।

    नियंत्रण संरचनाएं (Control Structures) विभिन्न प्रकार के कोड ब्लॉक हैं, जो शाब्दिक (literals) या चर (variable) नामों के रूप में, कुछ शर्त (condition) या कुछ मूल्य (value) पारित (pass) करने पर, वांछित परिणाम (आउटपुट) देते हैं। उदाहरण के लिए, आप सीधे वेब-ब्राउज़र में echoफ़ंक्शन या print() फ़ंक्शन के द्वारा बूलियन मान प्रदर्शित नहीं कर सकते हैं, लेकिन इन नियंत्रण संरचनाओं की सहायता से आप वांछित परिणाम आउटपुट कर सकते हैं। याद रखें, var_dump() फ़ंक्शन न केवल बूलियन मान को आउटपुट करता है, बल्कि वांछित परिणाम के साथ एक शाब्दिक या चर/स्थिर नाम के डेटा-प्रकार को भी आउटपुट करता है।

    आइए एक-एक करके निम्नलिखित नियंत्रण संरचनाओं की जाँच करें:

1) if() {}                                             ⇒ if ब्लॉक,

2) if() {} else {}                            ⇒ if-else ब्लॉक,

3) if() {} elseif() {} else {}   ⇒ if-elseif-else ब्लॉक,

4) if() {} else if() {} else {} ⇒ if-else if-else ब्लॉक − (else if उनके बीच रिक्त स्थान वाले दो शब्द हैं),

5) while() {}                                      ⇒ while ब्लॉक,

6) do {} while()                               ⇒ do-while ब्लॉक,

7) for() {}                                          ⇒ for ब्लॉक,

8) foreach() {}                                 ⇒ foreach ब्लॉक,

9) switch() {}                                    ⇒ switch ब्लॉक,

10) match() {}                                     ⇒ match ब्लॉक,

11) declare() {}                                 ⇒ declare ब्लॉक,

12) break और/या continue − पोस्ट-फ़िक्स द्वारा ( ) कोष्ठक के अंदर पूर्णांक मान बहु-स्तरीय (multi-level) हो सकते हैं।

13) return − यह कॉलिंग मॉड्यूल को प्रोग्राम कंट्रोल लौटाता है। निष्पादन (Execution) मॉड्यूल के आह्वान (invocation) के बाद अभिव्यक्ति (expression) पर फिर से शुरू (resumes) होता है।

14) require और/या include,

15) require_once और/या include_once, और

16) goto − goto ऑपरेटर का उपयोग प्रोग्राम में दूसरे सेक्शन में जाने के लिए किया जा सकता है। यह पूर्ण अप्रतिबंधित goto नहीं है।

if if-else if-elseif-else

    if(){},     if(){} else{}, और   if(){} elseif(){} else{} कंडीशनल ब्लॉक हैं, जो PHP और अन्य प्रोग्रामिंग भाषाओं में अक्सर उपयोग किए जाते हैं। जब if या elseif के ठीक बाद () कोष्ठक के अंदर एक सशर्त अभिव्यक्ति (condit­ional expre­ssion) true होती है, तो {} घुंघराले ब्रेसिज़ के अंदर कथनों (statements) को निष्पादित किया जाता है। अन्यथा, PHP interpreter अगली पंक्ति या कोड के अगले ब्लॉक पर नियंत्रण पास करता है, ... आइए इसे निम्नलिखित उदाहरण के साथ विस्तृत करें:

<?php if( true ) { echo "TRUE"; } // आउटपुट TRUE है ?><br />

<?php if( true ) echo "TRUE"; // आउटपुट TRUE है ?><br />

    जब सशर्त अभिव्यक्ति (कोष्ठकों के अंदर) के बाद केवल एक कथन (आमतौर पर ; अर्ध-विराम द्वारा समाप्त) होता है, तो ऊपर दिखाए गए अनुसार घुंघराले ब्रेसिज़ की आवश्यकता नहीं होती है। साथ ही, जब कथन ?> (क्लोजिंग PHP टैग) से ठीक पहले होता है, तो टर्मिनेटर ; (अर्धविराम) आवश्यक नहीं है। क्लोजिंग कर्ली ब्रेस से पहले आपको सिंगल-लाइन कमेंट नहीं करना चाहिए, अन्यथा ERROR प्रदर्शित होगा।

<?php if( true ) { echo "TRUE"; // आउटपुट ERROR, जैसा कि नीचे दिखाया गया है: } ?>


Parse error: Unclosed '{' on line 1 in C:\xampp\htdocs\php_project\phptest.php on line 1

<?php
    if( true ) {
        echo 'TRUE'; // कोई त्रुटि नहीं दिखाई जाएगी
    }
?>

    जो कुछ भी () कोष्ठक के अंदर true के रूप में मूल्यांकन किया जाता है, वह {} घुंघराले ब्रेसिज़ या उसके बाद एक एकल कथन के अंदर कोड निष्पादित करेगा। जब सशर्त अभिव्यक्ति false होती है, तो if(){} ब्लॉक के घुंघराले ब्रेसिज़ के अंदर कोड निष्पादित नहीं होते हैं और PHP inter­preter स्क्रिप्ट की अगली पंक्ति (नीचे) पर जाएगा। सशर्त अभिव्यक्ति FALSE होने पर else {} घुंघराले ब्रेसिज़ के अंदर कोड निष्पादित करने के लिए ब्लॉक प्रदान किया जाता है।

<?php
    if( 0 ) {
        echo 'TRUE';
    } else {
        echo 'FALSE';
    }
?>

    उपरोक्त उदाहरण में, आउटपुट FALSE है, क्योंकि () कोष्ठक के अंदर सशर्त अभिव्यक्ति 0 (शून्य) है, जिसका मूल्यांकन false के रूप में किया जाता है। आपको यहां ध्यान देना चाहिए कि उपरोक्त सभी उदाहरणों से, आउटपुट TRUE और FALSE बूलियन मान नहीं हैं, लेकिन स्ट्रिंग डेटा-प्रकार हैं। आप इन्हें बूलियन मूल्यों के 'झूठे प्रतिनिधित्व' (false repre­senta­tion) के रूप में देख सकते हैं!

    आप इसे और अधिक गतिशील (dynamic) बनाने के लिए कंडीशनल एक्सप्रेशन के अंदर तुलना ऑपरेटर, लॉजिकल ऑपरेटर, बिटवाइज़ ऑपरेटर आदि रख सकते हैं। साथ ही, आप () कोष्ठक के अंदर किसी भी डेटा-प्रकार के चर और स्थिरांक का जैसे कि true या false मूल्यांकन कर सकते हैं। elseif या else if (उनके बीच रिक्त स्थान वाले दो शब्द) समान हैं और समान प्रभाव रखते हैं। लेकिन बाद वाले में पहले वाले से मामूली अंतर है, कुछ उदाहरणों में, जिनका वर्णन बाद में किया जाएगा।

<?php
    if( 0 ) {
        echo 'ZERO';
    } elseif( 1 ) {
        echo 'ONE';
    } else {
        echo 'TWO';
    }
?>

    उपरोक्त उदाहरण में, आउटपुट ONE है। if(0) के बाद घुंघराले ब्रेसिज़ के अंदर कोड का पहला ब्लॉक निष्पादित नहीं किया जाएगा, क्योंकि 0 (शून्य) का मूल्यांकन false किया जाता है। elseif(1) के बाद घुंघराले ब्रेसिज़ के अंदर कोड का दूसरा ब्लॉक निष्पादित किया जाएगा, क्योंकि 1 का मूल्यांकन true किया जाता है। आप उपरोक्त स्क्रिप्ट को else if कीवर्ड के साथ लिख सकते हैं और परिणाम वही है जैसा ऊपर बताया गया है।

<?php
    if( 0 ) {
        echo 'ZERO';
    } else if( 1 ) {
        echo 'ONE';
    } else {
        echo 'TWO';
    }
?>

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

<?php
    if( 0 ) {
        echo 'ZERO';
    } elseif( 1 ) {
        echo 'ONE';
    }
?>

    आप उपरोक्त उदाहरणों को नीचे दिखाए अनुसार लिख सकते हैं, लेकिन निम्नलिखित कोड में तीन if(){}ब्लॉक हैं। उपरोक्त सभी उदाहरणों में if(){} elseif(){} else{} कोड का केवल एक ब्लॉक निष्पादित किया जाएगा, या तो कोष्ठक के अंदर कोई एक सशर्त अभिव्यक्ति true है या सभी सशर्त अभिव्यक्ति false हैं। लेकिन निम्नलिखित उदाहरण में, दो या अधिक if(){} or if(){} else{} ब्लॉक हैं, जो एक दूसरे से जुड़े नहीं हैं। इस मामले में (नीचे दिए गए उदाहरण में) जब कोष्ठक के अंदर सभी सशर्त अभिव्यक्तियां true हैं, कोड के सभी ब्लॉक निष्पादित किए जाएंगे।

<?php
    if( 1 ) {   echo 'one';   }     if( 2 ) {   echo 'two';   }     if( 3 ) {   echo 'three';   }
?>

    शाब्दिक 1, 2 और 3 को उपरोक्त उदाहरण में कोष्ठकों के अंदर रखा गया है ताकि आपको यह समझाया जा सके कि सभी सशर्त अभिव्यक्तियों का मूल्यांकन true के रूप में किया गया है। यदि कोष्ठक के अंदर प्राप्त डेटा 0, '' (खाली स्ट्रिंग), [] (खाली सरणी), null, आदि या कुछ भी जिसका मूल्यांकन false किया जाएगा, कर्ली ब्रेसिज़ के अंदर कोड के संबंधित ब्लॉक को निष्पादित नहीं किया जाएगा। PHP में, कुछ मामलों, उदाहरण के लिए, हेरेडोक और नाउडॉक स्ट्रिंग्स को छोड़कर इंडेंटेशन महत्वपूर्ण नहीं है। इसलिए, उपरोक्त उदाहरण का आउटपुट होगा:

onetwothree

नेस्टेड if-elseif-else

    आपको सिंगल/डबल कोट्स की एक जोड़ी के अंदर रिक्त स्थान और <br /> HTML तत्व को सावधानी से सम्मिलित करना चाहिए जैसा कि आप ऊपर के उदाहरण में देख सकते हैं, आउटपुट में कोई रिक्त स्थान या लाइन-ब्रेक नहीं है! इसी तरह, आप पहले ब्लॉक if(){} और आखिरी ब्लॉक else{} के बीच elseif(){} कोड के कई ब्लॉक रख सकते हैं। सभी संभावित NESTED if-elseif-else नियंत्रण संरचना का एक जटिल उदाहरण नीचे दिखाया गया है:

<?php
  if( 4 < 3 ) {
    echo 'शर्त 1 सत्य है।<br />';
    if( [] ) { echo 'नेस्टेड स्थिति 1 सत्य है।<br />'; }
    elseif( "" ) { echo 'नेस्टेड स्थिति 2 सत्य है।<br />'; }
    else { echo 'नेस्टेड स्थितियाँ सत्य नहीं हैं।<br />'; }
  } elseif( 3 === 3.0 ) {
    echo 'शर्त 2 सत्य है।<br />';
    if(4> 6) { echo 'नेस्टेड स्थिति 3 सत्य है।<br />'; }
    elseif( ! true ) { echo 'नेस्टेड स्थिति 4 सत्य है।<br />'; }
    else { echo 'elseif(!true) ब्लॉक में नेस्टेड स्थितियाँ सही नहीं हैं।<br />'; }
  }
  else echo 'सभी शर्तें झूठी हैं। कोड का केवल एक ब्लॉक निष्पादित किया जाएगा।';
?>

    उपरोक्त कोड केवल एक उदाहरण है, और यह बहुत अधिक जटिल और बड़ा हो सकता है। नेस्टेड स्थिति 4 में, ! NOT (नहीं) ऑपरेटर का उपयोग किया गया है, जो सशर्त अभिव्यक्ति को इसके विपरीत मूल्यांकन में, फ़्लिप (flip) करता (पलटता) है। इस प्रकार, true false बन जाएगा, और ! ऑपरेटर उपयोग करते समय और अधिक व्यवहारों की अपेक्षा की जा सकती है। आप अगले पृष्ठों में अन्य ऑपरेटरों के बारे में जानेंगे।


Leave a Comment: