दिलचस्प पोस्ट
Django में स्थिरता लोड करते समय सामग्री प्रकार की समस्याएं पीएचपी में बिट्स ऑपरेशन? jQuery: कुंजीपटल बैकस्पेस आग नहीं होगा? एक async विधि के अंत में, क्या मुझे वापस आना चाहिए या इंतजार करना चाहिए? कंसोल विंडो को प्रोसेस से प्रारंभ करें। प्रारंभ सी # क्यों `या` के साथ कई मूल्यों के आधार पर कोई चर जाँचता है, केवल प्रथम मान की जांच करें? सी # में int के लिए कोई अतिप्रवाह अपवाद नहीं है? हालत ब्लॉक के अंदर एक फ़ंक्शन घोषणा क्यों क्रोम में गुंजाइश करने के लिए फिक्स्ड नहीं है, लेकिन फ़ायरफ़ॉक्स? सेट कस्टम फ़ॉन्ट के लिए कस्टम फ़ॉन्ट के साथ मेमोरी लीक एक उप-ग्रिड में ग्रिड डेटा पर jqGrid पुनरावृत्त XML 1.0 में "नियंत्रण" वर्ण अवैध क्यों हैं? सीएसएस जब इनलाइन ब्लॉक तत्वों लाइन-ब्रेक, माता-पिता आवरण नई चौड़ाई फिट नहीं है मैं नेट पर 7-ज़िप अभिलेखागार कैसे बना सकता हूं? किसी वेबसाइट के लिए एक ब्राउज़र टैब आइकन (फेविकॉन) कैसे जोड़ें? Parallel.ForEach एक "आउट ऑफ़ मेमोरी" अपवाद पैदा कर सकता है यदि एक बड़ी ऑब्जेक्ट के साथ गणना करने के साथ काम कर रहा है

पीएचपी टर्नेरी ऑपरेटर बनाम स्विच स्टेटमेंट बनाम आईएफएफएफ़ … जो मुझे इस्तेमाल करना चाहिए?

मैं एफ़डीएफ़ भाग के साथ एक PHP टर्नरी ऑपरेटर कैसे लिख सकता हूं?

मुझे इस तरह पीएचपी टर्नेरी ऑपरेटर के if और else हिस्से के साथ बुनियादी उदाहरण मिलते हैं:

 echo (true) ? "yes" : "no"; //prints yes echo (false) ? "yes" : "no"; //prints no 

मैं ट्रिरेन ऑपरेटर में "elseif" भाग को कैसे प्राप्त करूं?

 <?php if($result->vocation == 1){ echo "Sorcerer"; }else if($result->vocation == 2){ echo 'Druid'; }else if($result->vocation == 3){ echo 'Paladin'; }else if($result->vocation == 4){ echo 'Knight'; }else if($result->vocation == 5){ echo 'Master Sorcerer'; }else if($result->vocation == 6){ echo 'Elder Druid'; }else if($result->vocation == 7){ echo 'Royal Paladin'; }else{ echo 'Elite Knight'; } ?> 

वेब के समाधान से एकत्रित समाधान "पीएचपी टर्नेरी ऑपरेटर बनाम स्विच स्टेटमेंट बनाम आईएफएफएफ़ … जो मुझे इस्तेमाल करना चाहिए?"

एक टर्नरी आप क्या चाहते हैं इसका अच्छा समाधान नहीं है। यह आपके कोड में पठनीय नहीं होगा, और उपलब्ध बेहतर समाधान उपलब्ध हैं।

क्यों नहीं एक सरणी "नक्शा" या "शब्दकोश" देखने का उपयोग करें, जैसे:

 $vocations = array( 1 => "Sorcerer", 2 => "Druid", 3 => "Paladin", ... ); echo $vocations[$result->vocation]; 

इस एप्लिकेशन के लिए एक टर्नरी इस तरह दिखेंगे:

 echo($result->group_id == 1 ? "Player" : ($result->group_id == 2 ? "Gamemaster" : ($result->group_id == 3 ? "God" : "unknown"))); 

यह बुरा क्यों है? क्योंकि – एक लंबी लाइन के रूप में, अगर आपको कुछ गलत जाना है तो आपको कोई वैध डिबगिंग जानकारी नहीं मिलेगी, लंबाई को पढ़ने में मुश्किल होता है, प्लस एकाधिक टर्नरीज़ के नेस्टिंग को अजीब लगता है।

एक मानक टर्नरी सरल, पढ़ने में आसान है, और यह इस तरह दिखता है:

 $value = ($condition) ? 'Truthy Value' : 'Falsey Value'; 

या

 echo ($some_condition) ? 'The condition is true!' : 'The condition is false.'; 

एक टर्नरी वास्तव में एक सरल / if else बयान लिखने का एक आसान / छोटा रास्ता है उपरोक्त नमूना टर्नरी समान है:

 if ($some_condition) { echo 'The condition is true!'; } else { echo 'The condition is false!'; } 

हालांकि, एक जटिल तर्क के लिए एक त्रिगुट जल्दी से अपठनीय हो जाता है, और संक्षेप के लायक नहीं रह गया है

 echo($result->group_id == 1 ? "Player" : ($result->group_id == 2 ? "Gamemaster" : ($result->group_id == 3 ? "God" : "unknown"))); 

यहां तक ​​कि कुछ पंक्तियों पर फैलाने के लिए कुछ ध्यान स्वरूपण के साथ, यह बहुत स्पष्ट नहीं है:

 echo($result->group_id == 1 ? "Player" : ($result->group_id == 2 ? "Gamemaster" : ($result->group_id == 3 ? "God" : "unknown"))); 

चूंकि यह एक सामान्य कार्य होगा क्योंकि मैं एक फ़ंक्शन कॉल के स्विच / केस को लपेटने का सुझाव देता हूं।

 function getVocationName($vocation){ switch($vocation){ case 1: return "Sorcerer"; break; case 2: return 'Druid'; break; case 3: return 'Paladin'; break; case 4: return 'Knight'; break; case 5: return 'Master Sorcerer'; break; case 6: return 'Elder Druid'; break; case 7: return 'Royal Paladin'; break; default: return 'Elite Knight'; break; } } echo getVocationName($result->vocation); 
 echo ($result ->vocation == 1) ? 'Sorcerer' : ($result->vocation == 2) ? 'Druid' : ($result->vocation == 3) ? 'Paladin' .... ; 

यह बदसूरत की तरह है आपको सामान्य बयान के साथ रहना चाहिए

मूल PHP टर्नरी ऑपरेटर कैसे लिखना है:

 ($your_boolean) ? 'This is returned if true' : 'This is returned if false'; 

उदाहरण:

 $myboolean = true; echo ($myboolean) ? 'foobar' : "penguin"; foobar echo (!$myboolean) ? 'foobar' : "penguin"; penguin 

एक 'एथीफ' के साथ एक पीएचपी टर्नेरी ऑपरेटर को वहां पर कुचल दिया गया:

 $chow = 3; echo ($chow == 1) ? "one" : ($chow == 2) ? "two" : "three"; three 

लेकिन पार्लर ट्रिक्स को छोड़कर कृपया घोंसला टर्नरी ऑपरेटर्स न करें। यह एक खराब कोड गंध है

ईमानदार होने के लिए, एक टर्नेरी ऑपरेटर केवल इससे भी बदतर होगा, मैं यह सुझाव दे सकता हूं कि यदि आप इसे लक्ष्य बना रहे हैं तो यह सरल है:

 $groups = array(1=>"Player", 2=>"Gamemaster", 3=>"God"); echo($groups[$result->group_id]); 

और फिर आपके व्यवसाय के लिए एक समान एक

 $vocations = array( 1=>"Sorcerer", 2=>"Druid", 3=>"Paladin", 4=>"Knight", .... ); echo($vocations[$result->vocation]); 

एक टर्नरी ऑपरेटर के साथ, आप के साथ समाप्त होगा

 echo($result->group_id == 1 ? "Player" : ($result->group_id == 2 ? "Gamemaster" : ($result->group_id == 3 ? "God" : "unknown"))); 

जिसे आप बता सकते हैं, जितना अधिक आप इसे जोड़ते हैं उतना ही जटिल हो जाता है

मैं टर्नेटरी के बजाय होता हूं अगर-स्टेटमेंट स्विच-केस के साथ जाते हैं उदाहरण के लिए:

 switch($result->vocation){ case 1: echo "Sorcerer"; break; case 2: echo "Druid"; break; case 3: echo "Paladin"; break; case 4: echo "Knight"; break; case 5: echo "Master Sorcerer"; break; case 6: echo "Elder Druid"; break; case 7: echo "Royal Paladin"; break; default: echo "Elite Knight"; break; } 

तुम नहीं: यह गन्दा और पढ़ना मुश्किल है।

आप पहले मामले में switch स्टेटमेंट की तलाश कर रहे हैं। दूसरा ठीक है क्योंकि यह अभी भी स्थिरता के लिए परिवर्तित किया जा सकता है

टर्नरी स्टेटमेंट बूलियन मानों और वैकल्पिक तर्क के लिए अधिक अनुकूल हैं।

अन्य सभी उत्तरों के अतिरिक्त, आप switch उपयोग कर सकते हैं लेकिन यह थोड़ा सा लगता है

 switch ($result->vocation) { case 1: echo 'Sorcerer'; break; case 2: echo 'Druid'; break; case 3: echo 'Paladin'; break; case 4: echo 'Knight'; break; case 5: echo 'Master Sorcerer'; break; case 6: echo 'Elder Druid'; break; case 7: echo 'Royal Paladin'; break; default: echo 'Elite Knight'; break; }