if statement
सभी Control Statements में से if Statement सबसे शक्तिशाली Statement है, जिसके द्वारा हम Statements के Execution के Flow को Control कर सकते हैं। यह एक द्वि-मार्गी (Two Way) Statement है, जिसमें Condition के सत्य या असत्य होने के आधार पर निर्भर करते हुए प्रोग्राम का Control दो अलग-अलग बिंदुओं पर पहुंच सकता है। यानी If Statement के अनुसार प्रोग्राम के पास दो रास्ते रहते हैं, एक Condition के सत्य होने की स्थिति में व दूसरा Condition के असत्य होने की स्थिति में।
जब हमें Condition के सत्य होने पर केवल एक Statement का Execution करना होता है, तब हम निम्न प्रकार के Syntax में if Condition को Use कर सकते हैं-
if ( Expression or Condition )
Statement 1;
इस Syntax के अनुसार जब if Statement के कोष्टठक में Specified Expression या Condition True Return करता है, तब Statement 1 Execute हो जाता है।
जब हमें किसी Condition के सत्य होने पर एक से अधिक Statements का Execution करना हो, तो हमें सभी Statements मंझले कोष्टठक में लिखने पडते हैं। यदि हम ऐसा नहीं करते व ऊपर बताए Syntax के अनुसार ही प्रोग्राम लिख देते हैं, तो Condition के सत्य होने पर PHP Interpreter पहले Statement का तो Execution कर देता है, लेकिन द्रोष Statements को Program की Condition के अनुसार Execute नहीं करता बल्कि उन्हें Program के Normal Flow के अनुसार Execute करता है।
इस स्थिति में पहले Statement को छोडकर बाकी के सभी Statements हमेंशा Execute होते हैं चाहे if Condition सत्य हो चाहे असत्य। इसलिये यदि if Condition के प्रोग्राम में एक से अधिक Statements का Execution करना हो तो हमें निम्न if Syntax Use करना पडता है-
if ( Expression or Condition ){ Statement 1; Statement 2; “ “ “ “ “ “ Statement n; } Other Statements
उपरोक्त Syntax में जब Condition सत्य होती है, तो Block के अन्दर लिखे सारे Statements का Execution हो जाता है, उसके बाद Other Statements का यानी Block से बाहर के Statements का Execution होता है। लेकिन यदि Condition असत्य होती है, तो प्रोग्राम Control, if Condition के Block को छोड कर सीधे ही Other Statements यानी Block के बाहर के Statements का Execution कर देता है।
Condition सत्य हो या असत्य फिर भी Other Statements यानी Block से बाहर के Statement का Execution होता है, क्योंकि ये Statement Sequential Flow में है। इस Control Statement के आधार पर हम निम्नानुसार एक Example Program Develop कर सकते हैं।
इस Statement को अच्छी तरह से समझने के लिए हम दो संख्याओं में से बडी संख्या ज्ञान करने का एक PHP Program बना सकते हैं, जो कि निम्नानुसार हैः
<?php $x = 10; $y = 20; if($x>$y){ echo "$x is greater then $y"; } if($x<$y){ echo "$y is greater then $x"; } ?> Output: 10 is greater then 20
जब हम उपरोक्त PHP Script को Interpret करते हैं, तो $x व $y नाम के दो Variables Create होते हैं, जिनमें क्रमश: 10 व 20 मान Initialized रहते हैं। फिर PHP Interpreter आगे बढता है, तो उसे एक if Statement मिलता है, जिसमें $x<$y को Condition के रूप में Specify किया गया है।
चूंकि $x का मान 10 व $y का मान 20 है, इसलिए PHP यहां पर ये Check करता है कि “क्या 10 बडा है 20 से” और चूंकि 10 बडा नहीं होता 20 से, इसलिए ये Conditional Expression False Return करता है। फलस्वरूप PHP Interpreter if Statement के Curly Braces के बीच Enter नहीं करता। क्योंकि PHP उसी स्थिति में इस Block में Enter करके Block के Statements का Execution कर सकता है, जबकि if Condition के कोष्टठक में Specified Expression True Return करे।
फलस्वरूप पहले if Statement के Curly Braces यानी Block के बीच लिखा गया Statement Execute नहीं होता बल्कि PHP सीधे ही दूसरे if Statement पर पहुंच जाता है।
इस दूसरे Statement में फिर से एक Conditional Expression Specified है। इसलिए च्भ्च् यहां ये Check करता है कि “क्या $x का मान छोटा है $y के मान से” यानी “क्या 10 छोटा है 20 से” और चूंकि हम जानते हैं कि 10 हमेंशा 20 से छोटा होता है, इसलिए $x<$y Expression यहां पर True Return करता है।
इस तरह से if Statement के कोष्टठक में True आता है, परिणाम स्वरूप Program Control if Statement के Block में प्रवेश करता है और वहां के Statement को Interpret कर देता है, जो कि Output के रूप में हमें Screen पर Display हो जाता है।
if – else statement
इस Statement को हम तब उपयोग में लेते हैं, जब हमारे पास कोई ऐसी समस्या होती है, जिसके केवल दो ही संभावित परिणाम हो सकते हैं।
उदाहरण के लिए या तो Fan On हो सकता है या फिर Off हो सकता है। कोई Fan On भी हो और उसी समय पर Off भी हो, ऐसा कभी नहीं हो सकता।
एक और उदाहरण लें, तो कोई संख्या या तो Even हो सकती है या फिर Odd हो सकती है। ऐसी कोई संख्या नहीं होती, जो Even भी हो और Odd भी।
जब हमें दो या दो से अधिक शर्तों के आधार पर कोई निर्णय लेना होता है, या प्रोग्राम से कोई खास काम करवाना होता है, तब हम if – else Statement का प्रयोग करते हैं। यह साधारणतः if Statement का विस्तृत रूप है। इसका Syntax नीचे दिखाया गया है-
if ( Expression or Condition ){ Statement 1; Statement 2; “ “ “ Statement n; } else { Statement 3; Statement 4; “ “ “ Statement m; } Sequential Statement a;
इस Syntax के अनुसार या तो if Statement का Block Execute हो सकता है या फिर else Statement का Block. जब if Condition सत्य होती है, if Statement के Block में Specified Statements Statement 1, Statement 2, से Statement n तक का Execution होता है लेकिन यदि if Condition असत्य होता है, तो प्रोग्राम Control, if Statement Block को छोड कर Default रूप से else Condition के Statements Block में पहुंच जाता है। परिणामस्वरूप Statement 3, Statement 4 से Statement m तक का Execution होता है।
if Condition के कोष्टठक में Specify किए गए Expression द्वारा Return होने वाले True या False मान के आधार पर if या else Block का Execution होने के बाद प्रोग्राम Control, Sequential Statements का Execution करता है।
Sequential Statements का तो Execution होता ही है, क्योंकि ये Statement किसी Conditional Block का हिस्सा नहीं है बल्कि Sequential क्रम में हैं। यदि हम इस Statement का प्रयोग पिछले Program में करना चाहें, तो हम हमारे उपरोक्त PHP Program को निम्नानुसार Modify कर सकते हैं-
<?php $x = 10; $y = 20; if($x>$y){ echo "$x is greater then $y"; } else{ echo "$y is greater then $x"; } ?> Output: 10 is greater then 20
हम देख सकते हैं कि दोनों ही Programs का Output समान ही प्राप्त होता है। ऐसा इसलिए हो रहा है क्योंकि ये Statement if Statement का ही विस्तृत रूप है।
ध्यान रखने वाली एक सबसे महत्वपूर्ण बात ये है कि else Part हमेंशा False Condition में Execute होने वाला Part होता है। इसलिए else Statement के साथ कभी भी किसी Condition को Specify नहीं किया जाता।
इसीलिए हमने हमारे इस Modified Program में else के साथ कोई Condition Specify नहीं की है, जबकि पिछले वाले Program में हमने दूसरे if के साथ एक Condition Specify की थी। क्योंकि इस Program में उस दूसरे वाले if Statement की Condition Indirectly Specified है।
यानी यदि Condition True हो, तो if Statement का Block Execute होगा, लेकिन यदि Condition True न हो, तो इसका सीधा सा मतलब ये है कि Condition False है और यदि Condition False है, तो Default रूप से else Blok ही Execute होगा, क्योंकि else Part हमेंशा if Condition के False होने की स्थिति में ही Execute होता है।
साथ ही एक और ध्यान रखने वाली बात ये है कि else कभी भी बिना if Statement के Use नहीं किया जा सकता। यानी else Part हमेंशा if Part के बाद ही Specify किया जा सकता है।
Nested if…else statement
जब एक if Condition के Statement Block में एक और if Condition या if else Condition के Statement Block का प्रयोग किया जाता है, तो इसे if Condition की Nesting करना कहते हैं।
हम विभिन्न if Conditions की आवश्यकता के अनुसार Nesting कर सकते हैं, यानी हम एक if Condition के Statement Block में दूसरा if या if…else Condition का Statement Block, दूसरे में तीसरा if या if…else Condition का Statement Block, तीसरे में चौथा आदि कितनी भी संख्या में if Condition Statement Blocks की Nesting कर सकते हैं। इस Statement का Syntax निम्नानुसार होता है-
if ( Expression or Condition 1 ) { if ( Expression or Condition 2 ) { Statement 1; Statement 2; “ “ “ Statement l; } else { Statement 3; Statement 4; “ “ “ Statement m; } Inner Sequential Statement n; } else { Statement 5; Statement 6; “ “ “ Statement o; } Outer Sequential Statement a;
इस Syntax में यह बताया गया है, कि यदि प्रथम if Condition सत्य होती है, तो प्रोग्राम Control प्रथम if Condition के Statement Block में जाएगा। वहां प्रोग्राम Control को दूसरी if Condition मिलेगी।
यदि ये दूसरी if Condition भी सत्य है, तो प्रोग्राम Control, Inner if Condition Statement Block में जाएगा और Statement 1, Statement2 से Statement n तक के Statements का Execution करेगा।
फिर Inner if Statement Block के बाहर आकर Outer if Condition Block के Inner Sequential Statement n का Execution करेगा और अंत में प्रोग्राम Control दोनों if Condition Statement Block से बाहर आ कर Outer Sequential Statement a का Execution करेगा।
लेकिन यदि Inner if Condition सत्य ना हो, तो प्रोग्राम Control, Inner else Statement Block के Statement 3 से लेकर Statement m तक के Statements का Execution करेगा और Inner else से बाहर आकर Outer if Condition के Inner Statement, Statement n का Execution करेगा।
अगर दोनों ही if Conditions असत्य हो जाती है, तो प्रोग्राम Control सीधे ही Outer else Condition के Statement Block का Execution कर देता है और else Statement Block से बाहर आकर Outer Sequential Statement a का Execution करता है।
सारांश के रूप में हम यह कह सकते हैं कि जब if Condition के Statement Block का Execution होता है, तब else के Statement Block का Execution नहीं होता, और else Statement Block का Execution तभी होता है, जब if Condition असत्य हो जाती है।
इसे अच्छी तरह से समझने के लिये हम निम्न उदाहरण देखते हैं, जिसमें तीन संख्याओं में से बडी संख्या को Output में Print किया जा रहा है-
<?php $firstVal = 100; $secondVal = 200; $thirdVal = 300; if($firstVal>$secondVal){ if($firstVal>$thirdVal){ echo "$firstVal is the Biggest Value."; } else{ echo "$thirdVal is the Biggest Value."; } } else{ if($secondVal>$thirdVal){ echo "$secondVal is the Biggest Value."; } else{ echo "$thirdVal is the Biggest Value."; } } ?> Output: 300 is the Biggest Value.
इस Program में हमने $firstVal, $secondVal व $thirdVal नाम के तीन Variables लिए हैं और तीनों में क्रमश: 100, 200 व 300 मान Initialize किए हैं।
जब ये Program Interpret होता है व PHP Interpreter सबसे पहले if Statement पर पहुंचता है, तो निम्न Condition Check होती हैः
$firstVal>$secondVal
यानी
100>200 //False
चूंकि 100 बडा नहीं होता है 200 से, इसलिए ये if Statement False Return करता है, फलस्वरूप इस Outer if Statement का else Part Interpret होता है और Program Control सीधे ही else Part के Block में Enter करता है। इस else Block में PHP को निम्नानुसार फिर से एक if Condition प्राप्त होती हैः
$secondVal>$thirdVal
यानी
200>300 //False
यहां भी 200 बडा नहीं होता 300 से, इसलिए False Return होता है। फलस्वरूप PHP Parser इस Inner if Statement के else Part में Enter करता है और वहां लिखे ECHO Statement को Execute कर देता है, परिणामस्वरूप हमें निम्न Result प्राप्त होता हैः
300 is the Biggest Value.
लेकिन यदि हम उपरोक्त Program में $firstVal का मान 300 व $thirdVal का मान 100 कर दें, तो उपरोक्त Code निम्न Flow में Interpret होगाः
सबसे पहले PHP Interpreter पहले if Statement पर पहुंचेगा और निम्नानुसार Condition Check होगीः
$firstVal>$secondVal
यानी
300>200 //True
चूंकि 300 बडा होता है 200 से, इसलिए ये if Statement True Return करता है, फलस्वरूप PHP Interpreter का Control इस Outer if Statement के Statement Block में Enter करता है। जहां उसे निम्नानुसार एक और Inner if Statement प्राप्त होता हैः
$firstVal>$thirdVal
यानी
300>100 //True
चूंकि 300 बडा होता है 100 से, इसलिए ये if Statement भी True Return करता है, फलस्वरूप PHP Interpreter का Control इस Inner if Statement के Statement Block में Enter करता है और वहां Specified ECHO Statement को Execute कर देता है। जिससे हमें निम्न Output प्राप्त होता हैः
300 is the Biggest Value.
हम देख सकते हैं कि दोनों ही बार हमें यही Output प्राप्त होता, क्योंकि ये Program ही तीन संख्याओं में से बडी संख्या ज्ञात करने के लिए लिखा गया है और हम किसी भी Variable में कोई भी मान Store करें, ये Program हमें हमेंशा सबसे बडी संख्या ही Return करता है।
यदि आप Programming के विषय में बिल्कुल नए हैं, तो फिर हो सकता है कि उपरोक्त Program का Logic आपको समझ में न आए। तो चलिए, इस Program का Logic समझते हैं।
तीन संख्याओं में वही संख्या सबसे बडी हो सकती है, जो कि अन्य दोनों संख्याओं से बडी हो। इसलिए उपरोक्त Program में हमने सबसे Outer if Statement में पहली व दूसरी संख्या को आपस में Compare किया है। यदि पहली संख्या बडी होती है दूसरी से, तो Program Control if Statement के Block में Enter करता है और इस बात को Check करता है कि क्या ये पहली संख्या तीसरी संख्या से भी बडी है या नहीं।
यदि पहली संख्या तीसरी संख्या से भी बडी हो, तो Program Control Inner if Statement के Block में भी Enter करेगा और Output के रूप में सबसे बडी संख्या यानी पहली संख्या को Print कर देगा।
लेकिन यदि पहली संख्या दूसरी संख्या से तो बडी हो और Program Control if Statement के Block में Enter करे लेकिन पहली संख्या तीसरी संख्या से बडी न हो, तो PHP का Program Control Inner if Statement में False Return होने की वजह से Inner else Statement के Block को Execute करेगा और Output के रूप में तीसरी संख्या को सबसे बडी संख्या के रूप में Print कर देगा।
लेकिन अब सवाल ये है कि तीसरी संख्या सबसे बडी कैसे हो सकती है, जबकि उसका Comparision केवल पहली संख्या से ही किया गया है न कि दूसरी संख्या से और किसी भी संख्या का सबसे बडी संख्या होने के लिए जरूरी है कि वह संख्या बाकी की दोनों संख्याओं से बडी हो ?
इस सवाल का जवाब ये है कि हालांकि तीसरी संख्या का दूसरी संख्या से Direct Comparision नहीं हो रहा है, लेकिन चूंकि पहली संख्या दूसरी संख्या से बडी है, इसका सीधा सा मतलब ये है कि दूसरी संख्या किसी भी स्थिति में सबसे बडी संख्या हो ही नहीं सकती। फलस्वरूप पहली या तीसरी संख्या में से ही कोई सबसे बडी संख्या हो सकती है।
जब पहली संख्या दूसरी संख्या से बडी लेकिन तीसरी संख्या से छोटी है, तो इसका मतलब यही है कि तीसरी संख्या ही सबसे बडी है, क्योंकि दूसरी संख्या तो पहले ही पहली संख्या से ही छोटी है तो तीसरी संख्या से बडी कैसे हो सकती है।
इसी तरह से यदि जब PHP Parser सबसे पहले if Statement पर पहुंचता है और वहां ये Check होता है कि पहली संख्या दूसरी संख्या से बडी है या नहीं, तो इस if Statement में यदि पहली संख्या का मान दूसरी संख्या से ज्यादा न हो, तो Program Control सीधे ही Outer if Statement के else Part में Enter करेगा और PHP Control के सीधे Outer else Part में Enter करने का मतलब यही है कि पहली संख्या सबसे बडी संख्या नहीं हो सकती, क्योंकि वह दूसरी संख्या से छोटी है। फलस्वरूप केवल दूसरी या तीसरी संख्या में से ही कोई संख्या सबसे बडी हो सकती है। जिसे Else Part के Inner if Statement में Check किया जाता है।
इस प्रकार से जब हम Nested if Statements का प्रयोग करते हैं, तब वास्तव में हमेंशा Direct Conditions Satisfy नहीं होतीं, बल्कि कुछ Conditions Indirectly भी Satisfied होती हैं।
यदि आपको तीन संख्याओं में से बडी संख्या ज्ञात करने का Logic ठीक से समझ में आ गया, तो आप समझ लीजिए कि if…else Control Statement आपको बिल्कुल समझ में आ चुका है, क्योंकि if…else Statement को Best तरीके से समझने के लिए तीन संख्याओं में से बडी संख्या ज्ञात करने के Program से बेहतर कोई Program नहीं है।
if – elseif – else Ladder statement
जब हमारे पास ऐसी समस्या होती है कि ढेर सारी Conditions में से कोई एक ही सही हो सके, तब हम इस Control Statement का प्रयोग करते हैं। इसमें क्रम से else के साथ कई if Conditions दी गई होती हैं और प्रोग्राम Control इन सभी Conditions को क्रम से Check करता है और जहां भी if Condition सत्य हो जाती है, प्रोग्राम Control उस if Condition के Statement Block का Execution कर देता है। द्रोष if Condition को प्रोग्राम Control Check नहीं करता हैं। इसका Syntax निम्नानुसार हैः
if ( Expression or Condition 1 ) { statement or Statement Block 1 } else if ( Expression or Condition 2 ) { statement or Statement Block 2 } else if ( Expression or Condition 3 ) { statement or Statement Block 3 } else if ( Expression or Condition m ) { statement or Statement Block m } else { statement or Statement Block } Sequential Statement or Statement Block n
इसे Practically समझने के लिए हम निम्नानुसार Program बना सकते हैं जिसमें किसी Student के कुल Marks की Total के Percent के आधार पर Output में Student की Grade का पता चलता है।
<?php $percent = 90; // Change Marks and See Results. if($percent>85){ ECHO "Passed with First Division - A Grade"; } elseif($percent>59){ ECHO "Passed with First Division"; } elseif($percent>44){ ECHO "Passed with Second Division"; } elseif($percent>35){ ECHO "Passed with Third Division"; } else{ ECHO "Failed"; } ?>
इस Program में हम देख सकते हैं कि $percent Variable का मान 90 है, इसलिए इस Control Statement की पहली Condition ही True हो जाती है और Output में “Pass with First Division – A Grade” Print हो जाता है। लेकिन यदि $percent का मान 40 होता, तो चौथी elseif Condition True होती और Output में “Passed with Second Division” Print होता।
उपरोक्त Program को हम निम्नानुसार भी बना सकते हैं जिसमें else के बाद if को else…if के रूप में Specify किया गया है न कि elseif के रूप में:
<?php $percent = 90; // Change Marks and See Results. if($percent>85){ ECHO "Passed with First Division - A Grade"; } else if($percent>59){ ECHO "Passed with First Division"; } else if($percent>44){ ECHO "Passed with Second Division"; } else if($percent>35){ ECHO "Passed with Third Division"; } else{ ECHO "Failed"; } ?>
उपरोक्त दोनों ही Programs समान रूप से परिणाम देते हैं, लेकिन elseif Statement की Speed else…if Statement की तुलना में तेज होती है। इसलिए हमें हमेंशा elseif का ही प्रयोग करना चाहिए न कि else…if का।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook PHP in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
PHP in Hindi | Page: 647 | Format: PDF