2012-10-31 14 views
16

मैं निम्नलिखित कोड को टर्नरी ऑपरेटर में बदलने की कोशिश कर रहा हूं, लेकिन यह काम नहीं कर रहा है और मुझे यकीन नहीं है कि क्यों। मुझे लगता है कि मेरी समस्या यह है कि मुझे नहीं पता कि टर्नरी प्रारूप में elseif ऑपरेशन को कैसे व्यक्त किया जाए। मेरी समझ से और elseif प्रारूप : (condition) ? 'result' प्रारूप का उपयोग करके if ऑपरेशन के समान ही किया जाता है।PHP Elseif Ternary Operators

if ($i == 0) { 
    $top = '<div class="active item">'; 
} elseif ($i % 5 == 0) { 
    $top = '<div class="item">'; 
} else { 
    $top = ''; 
} 

$top = ($i == 0) ? '<div class="active item">' : ($i % 5 == 0) ? '<div class="item">' : ''; 
+7

Whydoyouwantomakeyoursourcecodeunreadable? – VolkerK

+1

मैं नहीं करता, लेकिन मैं जानना चाहता हूं कि 'ifelse' को कैसे संभालना है। – Jon

+0

@ वोल्करके ने कहा, घोंसले टर्नरी ऑपरेटरों को बिल्कुल अच्छा विचार नहीं है। आपको इससे बचना चाहिए। – Carlos

उत्तर

34
$top = ($i == 0) ? '<div class="active item">' : (($i % 5 == 0) ? '<div class="item">' : ''); 

आप और पूरे आसपास कोष्ठक 'जोड़ने के लिए ब्लॉक की जरूरत है

14

त्रिगुट ऑपरेटर एक सच्चे if... else if... else... आपरेशन का समर्थन नहीं करता है; हालांकि, आप निम्नलिखित तकनीक

var name = (variable === 1) ? 'foo' : ((variable === 2) ? 'bar' : 'baz'); 

मैं व्यक्तिगत रूप से इस बात के लिए परवाह नहीं है का उपयोग करके व्यवहार अनुकरण के रूप में मैं इसे और अधिक पठनीय या सुरुचिपूर्ण नहीं मिल रहा है कर सकते हैं। मैं आमतौर पर switch कथन पसंद करता हूं।

switch (variable) { 
    case 1 : name = 'foo'; break; 
    case 2 : name = 'bar'; break; 
    default : name = 'bas'; break; 
} 
3

बहुत देर हो गई शायद कुछ विचारों को साझा करने के लिए, लेकिन फिर भी :)

  1. उपयोग करता है, तो - और अगर - मूल्यांकन की एक सीमित संख्या के लिए किसी और। व्यक्तिगत रूप से मैं इसका उपयोग करना पसंद करता हूं - अगर और - यदि अन्यथा तुलना की संख्या 5 से कम है।
  2. स्विच-केस का उपयोग करें जहां मूल्यांकन की संख्या अधिक है। निजी तौर पर मैं स्विच-केस पसंद करता हूं जहां मामले 5 से अधिक होते हैं।
  3. टर्नरी का उपयोग करें जहां एक एकल तुलना विचाराधीन है (या लूपिंग के दौरान एक तुलना), या जब "केस" खंड के अंदर एक और तुलना की आवश्यकता होती है एक स्विच संरचना।
  4. बहुत बड़े डेटा सेट पर लूपिंग करते समय तुलना करते समय टर्नरी का उपयोग तेज होता है।

IMHO इसका अंत में डेवलपर हैं जो कोड पठनीयता और प्रदर्शन और कि बारी में के बीच व्यापार बंद समीकरण का फैसला करता है फैसला करता है-यदि किसी और बाकी बनाम स्विच मामले, किसी में इस्तेमाल किया जा सकता है क्या, त्रिगुट बनाम से बाहर है, तो स्थिति विशेष।

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