PHP में स्विच केस 'या' का उपयोग कैसे करें


230

क्या PHP स्विच में 'OR' ऑपरेटर या समकक्ष का उपयोग करने का कोई तरीका है?

उदाहरण के लिए, कुछ इस तरह:

switch ($value) {

    case 1 || 2:
        echo 'the value is either 1 or 2';
        break;
}

जवाबों:


505
switch ($value)
{
    case 1:
    case 2:
        echo "the value is either 1 or 2.";
    break;
}

इसे केस ब्लॉक कहा जाता है। यह शब्द एक स्विच स्टेटमेंट को लागू करने वाली अधिकांश भाषाओं में मौजूद है।


135

यदि आप के ||साथ उपयोग करना चाहिए switchतो आप कोशिश कर सकते हैं:

$v = 1;
switch (true) {
    case ($v == 1 || $v == 2):
        echo 'the value is either 1 or 2';
        break;
}

यदि आपका पसंदीदा समाधान नहीं होता

switch($v) {
    case 1:
    case 2:
        echo "the value is either 1 or 2";
        break;
}

मुद्दा यह है कि दोनों विधि कुशल जब बड़े मामलों से निपटने ... सोच भी नहीं है 1करने के लिए 100इस पूरी तरह से काम करेगा

$r1 = range(1, 100);
$r2 = range(100, 200);
$v = 76;
switch (true) {
    case in_array($v, $r1) :
        echo 'the value is in range 1 to 100';
        break;
    case in_array($v, $r2) :
        echo 'the value is in range 100 to 200';
        break;
}

58

मैं अन्य उत्तरों को नहीं दूंगा क्योंकि वे सभी सही हैं, लेकिन मैं सिर्फ इतना जोड़ूंगा कि आप अधिक "जटिल" बयानों के लिए स्विच का उपयोग नहीं कर सकते, उदाहरण के लिए: यदि परीक्षण करने के लिए कि मान "3 से अधिक" है, " 4 और 6 "के बीच, आदि। यदि आपको ऐसा कुछ करने की आवश्यकता है, ifतो बयानों का उपयोग करने के लिए चिपके रहें , या यदि इसके लिए विशेष रूप से मजबूत आवश्यकता है, switchतो इसका उपयोग वापस करना संभव है:

switch (true) {
    case ($value > 3) :
        // value is greater than 3
    break;
    case ($value >= 4 && $value <= 6) :
        // value is between 4 and 6
    break;
}

लेकिन जैसा कि मैंने कहा, मैं व्यक्तिगत रूप से एक ifबयान का उपयोग करूँगा ।


1
खुशी है कि आपने इस मामले में स्विच () से अधिक की सिफारिश की है। इस तरह का स्विच सिर्फ जटिलता, आईएमओ जोड़ता है।
मू

1
हाँ, इस शैली को चुनने के लिए आपके पास एक सम्मोहक कारण होना चाहिए, लेकिन यह जानना अच्छा है कि यह संभव है।
निक '

2
मुझे वास्तव में यह जानकर खुशी हुई है। हर बार जब मैं एक बेसिक-वाई भाषा में एक परियोजना का निर्माण करता हूं, तो मुझे सी-स्टाइल होने की याद आती है switch(), और जब मैं सी-ईश भाषा में काम कर रहा होता हूं तो मुझे वास्तव में याद आती है Select Case, जो वास्तव में कहने का एक छोटा तरीका है "एक बड़ा है अगर, और अगर, और-अगर ... यहाँ।
स्टेन रोजर्स

5
you can't use switch for more "complicated" statementsयह है can'tया यह है shouldn't? क्योंकि आपके उदाहरण मेंcan
Sharky

@ शर्की का मतलब था कि स्विच का साधारण उपयोग मामला नहीं कर सकता। इस तरह की switch (true)बात स्विच का एक सामान्य उपयोग मामला नहीं है।
चेन ली योंग

37

इस लेख में इन निम्नलिखित उदाहरणों के साथ प्रयास करें: http://phpswitch.com/

संभव स्विच मामले:

(मैं)। एक साधारण स्विच स्टेटमेंट

स्विच स्टेटमेंट चमत्कारिक और जादुई है। यह भाषा का एक टुकड़ा है जो आपको एक मूल्य के लिए विभिन्न विकल्पों के बीच चयन करने की अनुमति देता है, और कोड के विभिन्न टुकड़ों को चलाता है जिसके आधार पर मूल्य निर्धारित होता है।

प्रत्येक संभव विकल्प स्विच स्टेटमेंट में एक केस द्वारा दिया गया है।

उदाहरण :

switch($bar)
{
    case 4:
        echo "This is not the number you're looking for.\n";
        $foo = 92;
}

(ii)। परिसीमन कोड ब्लॉक

स्विच का प्रमुख चेतावनी यह है कि प्रत्येक मामला अगले एक पर चलेगा, जब तक कि आप इसे ब्रेक के साथ नहीं रोकते। यदि ऊपर का साधारण मामला केस 5 को कवर करने के लिए बढ़ाया गया है:

उदाहरण :

case 4:
    echo "This is not the number you're looking for.\n";
    $foo = 92;
    break;

case 5:
    echo "A copy of Ringworld is on its way to you!\n";
    $foo = 34;
    break;

(iii)। कई मामलों के लिए परित्याग का उपयोग करना

क्योंकि स्विच टूटने तक कोड चलाता रहेगा, इसलिए यह काफी आसान है कि वह एक से अधिक मामलों के लिए एक ही कोड को अलग-थलग करे और एक ही कोड को चलाए:

उदाहरण :

मामला 2:

case 3:
case 4:
    echo "This is not the number you're looking for.\n";
    $foo = 92;
    break;

case 5:
    echo "A copy of Ringworld is on its way to you!\n";
    $foo = 34;
    break;

(iv)। उन्नत स्विचिंग: स्थिति के मामले

PHP का स्विच आपको किसी विशेष चर के मान पर स्विच करने की अनुमति नहीं देता है: आप किसी भी अभिव्यक्ति को किसी एक मामले के रूप में उपयोग कर सकते हैं, जब तक कि वह मामले के उपयोग के लिए एक मूल्य देता है। एक उदाहरण के रूप में, यहां एक साधारण सत्यापनकर्ता स्विच का उपयोग करके लिखा गया है:

उदाहरण :

switch(true)
{
    case (strlen($foo) > 30):
        $error = "The value provided is too long.";
    $valid = false;
    break;

    case (!preg_match('/^[A-Z0-9]+$/i', $foo)):
        $error = "The value must be alphanumeric.";
    $valid = false;
    break;

    default:
    $valid = true;
    break;
}

मुझे लगता है कि इससे आपको अपनी समस्या को हल करने में मदद मिल सकती है।


क्या आपके पास उदाहरण (iv) के लिए कोई वास्तविक विश्व उपयोग-मामला है?
पेड्रो मोरिरा


9

मैं आपको http://php.net/manual/en/control-structures.switch.php (मैनुअल) के माध्यम से जाने का सुझाव देता हूं

switch ($your_variable)
{
    case 1:
    case 2:
        echo "the value is either 1 or 2.";
    break;
}

व्याख्या

मूल्य के लिए जैसे आप एकल कथन को निष्पादित करते हैं, आप इसे बिना ब्रेक के रख सकते हैं जब तक कि या जब तक ब्रेक नहीं मिल जाता है तब तक यह कोड निष्पादित करता चला जाएगा और यदि यह पाया गया कि यह स्विच केस से बाहर आ जाएगा।


1

इस कोड का उपयोग करें:

switch($a) {
case 1:
case 2:
    .......
    .......
    .......
    break;
}

ब्लॉक 1 और 2 दोनों के लिए कहा जाता है।




-4

सबसे अच्छा तरीका अगर अनुरोध के साथ हो सकता है। इसके अलावा, यह उपयोग करने के लिए आसान और स्पष्ट हो सकता है।

उदाहरण:

<?php 
$go = $_REQUEST['go'];
?>
<?php if ($go == 'general_information'){?>
<div>
echo "hello";
}?>

उन कार्यों का उपयोग करने के बजाय जो PHP के साथ अच्छी तरह से काम नहीं करेंगे, खासकर जब आपके पास HTML में PHP है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.