PHP Jump Statements: PHP में कुछ ऐसे Statements भी हैं, जो Control को एक Execution Point से दूसरे Execution Point पर Jump करने का काम करते हैं। चूंकि ये Statements भी Program Control के Flow को Control करते हैं, इसलिए इन्हें भी Flow Control Statements के अन्तर्गत ही रखा जाता है। PHP के ये Jumping Statements निम्नानुसार हैं:
break Statement
ये Statement for, while, do…while, foreach या switch Statements के Execution को End कर देता है। यानी इस Statement का प्रयोग करके हम हमारे Program में इन Statements से किसी भी स्थान से Exit कर सकते हैं। ये Statement एक Optional Argument लेता है, जो इस बात को Indicate करता है कि हम किस Level के Nested Enclosing Structure से बाहर निकलना चाहते हैं।
इस Statement को हम switch Statement में तो देख ही चुके हैं। यहां एक उदाहरण द्वारा हम इसे एक Nested Loop Structure में देखेंगे।
<?php for($i=1; $i<=5; $i++){ for($j=1; $j<=$i*2-1; $j++){ if($i==2 || $i==4): break 1; endif; ECHO $i; } ECHO "\n"; } ?> Output: 1 33333 555555555
इस Program में जब PHP Interpreter Control if Statement पर पहुंचता है, तब वह Check करता है कि क्या $i का मान 2 या 4 के बराबर है या नहीं।
चूंकि पूरे Looping के दौरान केवल दो ही बार $i का मान 2 या 4 हो सकता है और जब $i का मान 2 या 4 होता है, तब if Condition True हो जाती है। परिणाम स्वरूप PHP Control if Statement Block में Enter करता है, जहां उसे break 1; Statement मिलता है, जो PHP Control को Current Block से एक Nested Level Up ले जाता है।
यानी Program Control break Statement से आगे नहीं बढता बल्कि सीधे ही Outer if Statement में चला जाता है। परिणाम स्वरूप जब $i का मान 2 व 4 होता है, तब Inner Loop Execute नहीं होता। इसीलिए Output में हमें 2 व 4 की Series दिखाई नहीं दे रही है, बल्कि केवल 1, 3 व 5 की Series ही दिखाई दे रही है।
उपरोक्त Code को यदि हम निम्नानुसार Modify करके break 1; की बजाय break 2; लिख देते, तो उपरोक्त Output बिल्कुल बदल जाता और हमें Output में केवल 1 ही दिखाई देताः
<?php for($i=1; $i<=5; $i++){ for($j=1; $j<=$i*2-1; $j++){ if($i==2 || $i==4): break 2; endif; ECHO $i; } ECHO "\n"; } ?> Output: 1
क्योंकि जैसे ही $i का मान 2 होता, Program Control सीधे ही दोनों Looping Statements से बारह आ जाता।
continue Statement
ये Statement for, while, do…while, foreach या switch Statements के Execution को End नहीं करता बल्कि Loop के Particular किसी Iteration को Skip कर देता है। यानी इस Statement का प्रयोग करके हम हमारे Program में इन Statements से किसी भी Iteration से Skip कर सकते हैं। break Statement की तरह ही ये Statement एक Optional Argument लेता है, जो इस बात को Indicate करता है कि हम किस Level के Nested Enclosing Structure के Looping Iteration से Skip करना चाहते हैं।
इस Statement को समझने का सबसे अच्छा तरीका यही है कि हम break व continue दोनों Statements को एक साथ Use करते हुए एक Program Create करें, जो कि निम्नानुसार हैः

पहले Program में हमने break Statement का प्रयोग किया है, इसलिए जैसे ही $i का मान 4 होता है, Program Control Current Loop से एक Nested Level Up चला जाता है। फलस्वरूप Program का End हो जाता है और हमें Output के रूप में केवल 1, 2 व 3 ही प्राप्त होते हैं।पहले Program में हमने break Statement का प्रयोग किया है जबकि दूसरे Program में हमने continue Statement को Use किया है। दोनों ही Programs में हमने समान Condition Specify की है कि यदि $i का मान 4 हो, तो Loop को break या continue करना है।
जबकि दूसरे Program में हमने break के स्थान पर continue का प्रयोग किया है। इसलिए जब इस दूसरे Program में $i का मान 4 होता है, तो PHP Control सीधे ही $i++ Statement पर चला जाता है और $i का मान Increment करके फिर से Loop के Body में Enter होता है। फलस्वरूप Output में केवल मान 4 Print नहीं होता। द्रोष सभी मान Print होते हैं।
बस break व continue में इतना ही अन्तर है। break पूरे Looping Statement को छोड देता है, जबकि continue केवल Current Iteration को छोडता है। यानी break Statement PHP Program Control को Block के Closing Curly Braces के बाद पहुंचा देता है, जबकि continue Statement PHP Program Control को Block के Closing Curly Braces के Just पहले पहुंचा देता है।
return Statement
इस Statement को जब हम किसी Function में Use करते हैं, तो Program Control उस Function का End करके Control को फिर से Script या Calling Function को Return करता देता है। यदि इसे eval() Statement में Use किया जाए, तो ये Statement eval() Statement का भी End कर देता है। इसी तरह से यदि हम इस Statement को Script में Use करते हैं, तो जैसे ही Program Control इस Statement पर पहुंचता है, Script File का भी End हो जाता है।
यदि return Statement का प्रयोग किसी ऐसी Script File में किया गया हो, जिसे Current Script File में include() या require() Function द्वारा Attach किया गया हो, तो return Statement के मिलते ही, इस Included या Required File का Execution End हो जाता है और Program Control उस Script File में Return हो जाता है, जिसमें इन Files को Include या Require किया गया था।
return Statement के विषय में ध्यान रखने वाली बात ये है कि return Statement कोई Function नहीं है, इसलिए इसके साथ Parenthesis का प्रयोग करना जरूरी नहीं होता और सामान्यतः हमें इसके साथ Parenthesis का प्रयोग नहीं करना चाहिए। क्योंकि यदि हम बिना कोई Argument Specify किए हुए return Statement के साथ Parenthesis का प्रयोग करते हैं, तो PHP Parser Error Trigger करता है।
goto Statement
goto Statement PHP का एक Operator है, जिसका प्रयोग Program के किसी एक Section से किसी दूसरे Section पर Jump करने के लिए किया जाता है। Target Point को एक Label के रूप में Specify किया जाता है और इस Label के बाद एक Colon Specify किया जाता है। इस Statement का Syntax निम्नानुसार होता हैः

सामान्यतः goto Statement का प्रयोग if Statement के अन्दर किया जाता है, ताकि किसी Specific स्थिति में Program Control किसी एक Section से किसी दूसरे Section पर Jump कर सके।उपरोक्त Syntax के अनुसार हम goto Operator को दो तरीकों से Use कर सकते हैं। पहले तरीके में हमने Program Control को Other Statements को Skip करके सीधे ही down Label पर पहुंचा दिया है, जिससे DownStatements का Execution होता हैं। जबकि दूसरे Syntax में हमने Program Control को फिर से up Label पर पहुंचा दिया है, जिससे UpStatements का Execution होता है।
यदि goto Statement को बहुत ही सावधानी से Use करना चाहिए। क्योंकि यदि हम goto Statement को पूरी सावधानी के साथ Use न करें, तो Program के Flow को Control करना काफी मुश्किल हो जाता है और कई बार Infinite Looping चालू हो जाती है। यानी एक ही Program Section बार-बार Execute होने लगता है।
इस Statement को यदि सही तरीके से Use किया जाए, तो हम इस Statement का प्रयोग करके विभिन्न प्रकार की समस्याओं का समाधान प्राप्त कर सकते हैं। उदाहरण के लिए निम्न Program में हमने goto Statement को एक प्रकार की Looping Create करने के लिए Use किया है, जिसे देखकर आप goto Statement को Use करना आसानी से समझ सकेंगेः
<?php $i = 1; up: ECHO "$i\t"; if(++$i != 11){ goto up; } ?> Output: 1 2 3 4 5 6 7 8 9 10
जैसाकि Output में हम देख सकते हैं कि इस Program में हमने goto Statement को एक Looping Statement की तरह Use किया है।
चूंकि सबसे पहले $i Variable का मान 1 है, जिसे हमनें Output में Display कर दिया है। फिर हमने एक if Statement में $i के मान को Increment किया है और ये Check किया है कि क्या $i का मान 11 के बराबर है या नहीं।
क्योंकि $i का मान सबसे पहले 1 होता है, इसलिए ++$i != 11 Expression True Return करता है, क्योंकि $i का मान Pre-Increment होकर 2 हो जाता है और 2!=11 यानी 2 कभी भी बराबर नहीं होता 11 के। परिणामस्वरूप Control if Statement Block में Enter करता है और वहां उसे up नाम का एक Label मिलता है। फलस्वरूप Program Control फिर से वहां चला जाता है, जहां up Label को Specify किया गया है।
ये प्रक्रिया 10 बार चलती है। ग्यारहवीं बार में $i का मान 11 हो जाता है, जिससे if Statement False हो जाता है और Program का End हो जाता है।
इस तरह से इस Program में हमने goto Statement को एक Looping Statement की तरह Use किया। इसी तरह से हम goto Statement को break व continue के रूप में भी Use कर सकते हैं। साथ ही इसे किसी Multi-Level Nested Loop से Exit करने के लिए भी Use किया जा सकता है। यानी हम goto Statement को अपनी जरूरत के अनुसार विभिन्न तरीकों से उपयोग में ले सकते हैं व अपनी विभिन्न प्रकार की जरूरतों को पूरा कर सकते हैं।
ध्यान रखने वाली एक बात ये भी है कि PHP में goto के साथ Specify किया जाने वाला Label एक Identifier होता है, इसलिए ये Label Case Sensitive होता है। यानी हम up के स्थान पर Up Specify नहीं कर सकते। यदि हम ऐसा करते हैं, तो उपरोक्त प्रोग्राम उपयुक्त Result Provide नहीं करेगा। साथ ही हम Label के रूप में किसी Variable के नाम का प्रयोग भी नहीं कर सकते।
वैसे बेहतर यही रहता है कि जहां तक हो सके, goto Statement को Avoid करना चाहिए, क्योंकि इसका प्रयोग करने पर Program के Flow को समझना व Program के Flow को Control करना काफी मुश्किल हो जाता है। इसीलिए लगभग सभी Programming Languages में goto Statement जरूर होता है, लेकिन इसे Use करने की सलाह किसी Programming Language में नहीं दी जाती।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook PHP in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
PHP in Hindi | Page: 647 | Format: PDF