2010-11-22 15 views
19

मैं एक दुविधा में हूं। उपयोग करने के लिए सबसे अच्छा कौन सा है और क्यों .. स्विच या अगर?स्विच बनाम अगर बयान

switch ($x) 
{ 
case 1: 
    //mysql query 
    //echo something 
    break; 
case 2: 
    //mysql query 
    //echo something 
    break; 
} 

...

if ($x == 1) { 
    //mysql query 
    //echo something  
} 

if ($x == 2) { 
    //mysql query 
    //echo something 
} 
+6

संभावित डुप्लिकेट [है "अगर" स्विच "(" मामले से तेज़ ")" है? "(Http://stackoverflow.com/questions/767821/is-else-if-faster-than-switch-case) (उस प्रश्न में भाषा सी # है लेकिन स्विच/केस और यदि कथन आम तौर पर PHP में समान व्यवहार करते हैं) – BoltClock

उत्तर

30

वे अलग अलग अर्थ है।

शर्त मिलने पर पहला उदाहरण रुक जाएगा।

दूसरा $x दो बार परीक्षण करेगा।

आप अपना दूसरा ifelse if बनाना चाहते हैं। इसका मतलब यह होगा कि जैसे ही एक शर्त सच पर मूल्यांकन करती है, ब्लॉक को छोड़ दिया जाएगा।

लेकिन यदि आप सोच रहे हैं कि कौन सा सबसे तेज़ है, तो आपको पर विचार करना चाहिए जो कि सबसे प्रभावी ढंग से संचार करता है जो मैं करना चाहता हूं। वे संभवतः लक्ष्य वास्तुकला में सशर्त कूद के रूप में समाप्त हो जाएंगे।

समय से पहले अनुकूलन ... (आप आराम पता: पी)

+0

बेशक, जब तक दूसरा अगर कथन एक और नहीं है। – BoltClock

+0

आप विशेष रूप से मेरे व्यापक उदाहरण के साथ एक अच्छा मुद्दा बनाते हैं! इसके लिए मैं आपके उत्तर को सही वोट देता हूं :) – CyberJunkie

5

सबसे पहले क्या आपके पास एक ही

switch(value) 
    case condition1: 
    break; 
    case condition2: 
    break 

if (condition1) { 
} 
if (condition2) { 
} 

नहीं है ये पर्याय बन गया है

switch(value) 
    case condition1: 
    break; 
    case condition2: 
    break 

if (condition1) { 
} 
else if (condition2) { 
} 

दूसरा यदि आप मेरे दूसरे ई के बारे में बात कर रहे हैं xample जहां दोनों समानार्थी हैं। फिर switch कथन का उपयोग if ..else if कथनों को कोडिंग में कुछ दर्द को कम कर सकता है ....

मेरे दृष्टिकोण में स्विच थोड़ा और अधिक पठनीयता प्रदान कर सकते हैं। लेकिन फिर भी ऐसे समय होते हैं जब if...else का उपयोग करना जटिल तर्क के साथ विशेष रूप से बेहतर होता है।

+1

अच्छी तुलना! धन्यवाद! – CyberJunkie

+0

+1 के लिए * समय है जब 'if ... else' का उपयोग करना बेहतर है * ... मैं खुद को हमेशा बूलियन के साथ बयान के रूप में उपयोग करता हूं क्योंकि यह आसान प्रवाह प्रदान करता है। –

7

दो से अधिक विकल्प होने पर स्विच बेहतर होता है। यह ज्यादातर प्रदर्शन की बजाय कोड पठनीयता और रखरखाव के लिए है।

जैसा कि अन्य ने बताया है, आपके उदाहरण बराबर नहीं हैं।

1

यदि आपके पास एक एकल चर है, संभावित मानों का एक सेट है, और आप प्रत्येक मान के लिए अलग-अलग कार्रवाइयां करना चाहते हैं, तो स्विच-केस क्या है।

स्विच स्टेटमेंट्स यह और अधिक स्पष्ट करते हैं कि आप केवल यह निर्धारित कर रहे हैं कि एक चर के मूल्यों में से कौन सा अनुमत मूल्य था।

यदि आपके पास अधिक जटिल स्थितियां हैं, या विचार करने के लिए कई चर हैं, तो if-statement का उपयोग करें।

5

स्विच स्टेटमेंट तेज़ होगा क्योंकि यह केवल एक बार मूल्य की जांच करता है।

1

दोनों कथन कुछ प्रकार के पैरामीटर की तुलना करके निर्णय लेने का बयान हैं और फिर परिणाम दिखाते हैं।स्विच स्टेटमेंट में कथन की तुलना में कोई संदेह नहीं है लेकिन अगर कथन का स्विच स्टेटमेंट पर बड़ा लाभ होता है, तो जब आपको लॉजिकल ऑपरेशंस (<,>, < =,> =,! =, ==) का उपयोग करना होता है। । जब भी आप लॉजिकल ऑपरेशंस के साथ आएंगे तो आपको स्विच स्टेटमेंट का उपयोग करके मारा जाएगा लेकिन चिंता न करें एक और तरीका है जिसका उपयोग आपके लक्ष्य पर पहुंचने के लिए किया जा सकता है, यदि if-statement या if-else या if-else-if बयान। मैं आपको सुझाव दूंगा कि अगर स्विच स्विच के बजाए अधिकतर समय लगता है।

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