दिलचस्प पोस्ट
बिना मज़बूत .xml कॉन्फ़िगरेशन फ़ाइल के जेपीए EntityManager बनाएँ अब हमारे पास std :: array है जो सी-स्टाइल एरेज़ के लिए उपयोग किया जाता है? मणि स्थापित: मणि देशी एक्सटेंशन बनाने में विफल (हेडर फाइल नहीं मिल सकती है) सूचना Android में यूआरएल से छवि लोड करें जावास्क्रिप्ट हैश का नक्शा कैसे लागू होता है? सी में टर्नरी (सशर्त) ऑपरेटर प्रत्येक स्तंभ के बराबर में एक स्तंभ के आधार पर किसी अन्य तालिका के डेटा के साथ एक तालिका में पंक्तियों को अपडेट करें jqGrid Chrome / Chrome Frame में सही ढंग से रेंडर नहीं करता है वर्तमान क्लिपबोर्ड सामग्री प्राप्त करें? AppBarLayout के साथ स्क्रॉलिंग दृश्य ओवरलैप करें नियंत्रण के सभी निर्भरता गुणों को कैसे गणना करें? मैं एएसपी.नेट एमवीसी में एक क्वेरी स्ट्रिंग के साथ एक यूआरएल कैसे रूट करूं? HTML में keydown रद्द करें स्वचालित रूप से घुमाएं प्रोग्राम को सक्षम और अक्षम करें? सी # में डेटाटाइंस के अंदरूनी हिस्सेदारी

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

मैं एफ़डीएफ़ भाग के साथ एक 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'; } ?> 

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

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

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

 $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; }