2011-04-08 10 views
8

मैं एक ही स्विच केस में एकाधिक मान पास करना चाहता हूं। मुझे एहसास नहीं है कि वे इसे करने की कोशिश कर रहे हैं। क्या कोई और तरीका है, प्रत्येक मामले को अपनी लाइन पर रखने से कम?स्विच स्टेटमेंट> एक ही मामले में एकाधिक केस मैचों को शामिल करना संभव है?

switch(get_option('my_template')) 
{ 
case 'test1', 'test2': 
return 850; 
break; 

default: 
return 950; 
} 
+0

क्या? बेशक PHP में ऐसी उन्नत भाषाओं जैसे बाश –

उत्तर

24
switch(get_option('my_template')) { 
    case 'test1': 
    case 'test2': 
     return 850; 
     break;  
    default: 
     return 950; 
} 
1

मुझे लगता है कि इस के रूप में आप प्राप्त कर सकते हैं के रूप में करीब है।

switch(get_option('my_template')) 
{ 
    case 'test1': 
    case 'test2': 
    return 850; 
    break; 

    default: 
    return 950; 
} 

सुधार के साथ संपादित किया गया।

+0

में मिली विशेषताएं नहीं हैं, यह देखते हुए कि प्रत्येक आइटम वापसी करता है, ब्रेक स्टेटमेंट की भी आवश्यकता नहीं होती है। इसके बजाय मैं सुझाव देता हूं कि यदि आप बाद में तथ्य के बाद फ़ंक्शन के अंदर मूल्य की आवश्यकता हो, तो आप एक चर को 850 या 950 पर सेट कर सकते हैं, और उसके बाद आपके पास केवल एक वापसी कथन होगा, जो एक तर्कसंगत psuedo-standard है। ब्रेक स्टेटमेंट को साफ़ करने के सुझाव के लिए – Horus

1

कैसे के बारे में इस

switch(get_option('my_template')) 
{ 
    case 'test1': 
    case 'test2': 
     return 850; 
     break; 

    default: 
     return 950; 
} 
2

जब तक आप अपने मामले पर break; उपयोग करते हैं, निष्पादन बस अगले मामले में गिर जाता है। आप अपने मामलों में से प्रत्येक को एक साथ stacking, द्वारा अपने लाभ के लिए इसका उपयोग कर सकते जैसे:

switch(get_option('my_template')) { 
    case 'test1': 
    case 'test2': 
    return 850; 
    break; 
    default: 
    return 950; 
} 

क्योंकि वहाँ 'test1' मामले पर कोई break; है, जब निष्पादन उस मामले को समाप्त होता है (यानी तुरंत, के बाद से कोई इसमें तर्क), नियंत्रण तब 'test2' मामले में गिर जाएगा, जो इसके break कथन पर समाप्त होगा।

इस मामले में, break इन मामलों के लिए भी आवश्यक नहीं है, क्योंकि return कथन switch से बाहर तोड़ने का ख्याल रखेगा।

+0

+1। धन्यवाद! –

2

स्विच संरचना के भीतर मुझे विश्वास नहीं है कि एक पंक्ति पर 'या' जैसे कुछ करने का कोई तरीका है। इस का सबसे सरल तरीका होगा:

switch(get_option('my_template')) 
{ 
    case 'test1': 
    case 'test2': 
    return 850; break; 

    default: 
    return 950; 
} 

लेकिन, खासकर यदि आप केवल एक मूल्य के लौट रहे हैं और कोड को क्रियान्वित नहीं, मैं कर रहा सिफारिश करेंगे निम्नलिखित:

$switchTable = array('test1' => 850, 'test2' => 850); 
$get_opt = get_option('my_template'); 
if in_array($get_opt, $switchTable) 
    return $switchTable[$get_opt]; 
else return 950; 
+0

सरणी समाधान – drudge

+0

के लिए +1 टर्नरी का भी उपयोग कर सकते हैं यदि आप if/else 'वापसी in_array ($ get_opt, $ switchTable) पसंद करते हैं? $ स्विचटेबल [$ get_opt]: 950; ' –

+0

+1 दिलचस्प लग रहा है। मैं इसे एक स्पिन दे दूंगा। –

संबंधित मुद्दे