PHP में break की वैकल्पिकता
break कमांड वैकल्पिक है।
हालांकि, इसके बिना, case ब्लॉक्स का
व्यवहार अप्रत्याशित होगा। आइए एक उदाहरण से देखते हैं।
मान लीजिए कि हमारे पास इस प्रकार का कोड है:
<?php
$num = 1;
switch ($num) {
case 1:
echo 1;
break;
case 2:
echo 2;
break;
case 3:
echo 3;
break;
}
?>
इसमें से सभी break हटा दें, और वेरिएबल
$num में शुरुआत के लिए नंबर 3 लिखें।
अभी तक सब कुछ वैसे ही काम करेगा, जैसा कि पहले करता था:
<?php
$num = 3; // यहां नंबर 3 होने दें
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// लॉन्च के बाद कोड 3 आउटपुट करेगा - सब ठीक है
?>
आइए अब वेरिएबल $num में नंबर
2 लिखें। इस स्थिति में, अपेक्षानुसार
case 2 एक्ज़िक्यूट होगा, और फिर अप्रत्याशित रूप से
case 3 भी एक्ज़िक्यूट होगा:
<?php
$num = 2;
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// लॉन्च के बाद कोड पहले 2, और फिर 3 आउटपुट करेगा
?>
यदि वेरिएबल $num में
नंबर 1 लिखा जाए, तो सभी
case कंस्ट्रक्शन एक्ज़िक्यूट होंगे:
<?php
$num = 1;
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// लॉन्च के बाद कोड पहले 1, फिर 2, और फिर 3 आउटपुट करेगा
?>
यानी ऐसा प्रतीत होता है कि break की अनुपस्थिति में,
इच्छित case के एक्ज़िक्यूशन के बाद,
उसके नीचे के सभी case भी एक्ज़िक्यूट हो जाते हैं। कभी-कभी
इस विशेषता का उपयोग समस्याओं को हल करते समय किया जाता है।
निम्नलिखित उदाहरण में, यदि वेरिएबल $num
का मान 1 या 2 है, तो
वेरिएबल $res में 'a' लिखा जाएगा।
यदि वेरिएबल $num का मान
3 है, तो वेरिएबल $res
में 'b' लिखा जाएगा:
<?php
$num = 1;
switch ($num) {
case 1:
case 2:
$res = 'a';
break;
case 3:
$res = 'b';
break;
}
echo $res;
?>
ऊपर मैंने लिखा है कि कभी-कभी इस विशेषता का उपयोग किया जाता है, लेकिन मैं, सामान्य तौर पर, इसका उपयोग करने की अनुशंसा नहीं करता हूं, क्योंकि कोड बहुत स्पष्ट नहीं रह जाता है।
ऐसे कार्य को if के माध्यम से हल करना अधिक स्पष्ट है:
<?php
$num = 1;
if ($num == 1 or $num == 2) {
$res = 'a';
}
if ($num == 3) {
$res = 'b';
}
echo $res;
?>