दिलचस्प पोस्ट
सी मैक्रो और कोष्ठक में तर्कों का उपयोग Node.js में, मैं अपनी अन्य फ़ाइलों से "शामिल" फ़ंक्शन कैसे करूं? जावा जेनरिक सुपर कीवर्ड मैं MySQL के ORNDER BY RAND () फ़ंक्शन को कैसे अनुकूलित कर सकता हूं? एकल डीजेंगो मॉडलफ़ॉर्म में कई मॉडल? अपाचे XAMPP कंट्रोल पैनल से नहीं चल रहा है (त्रुटि: अपाचे शट डाउन अनपेक्षित रूप से। यह अवरुद्ध पोर्ट के कारण हो सकता है) Google मानचित्र जावास्क्रिप्ट एपीआई v3 के सर्कल के बाहर नक्शा अस्पष्टता बदलें तर्क और एक पैरामीटर के बीच अंतर क्या है? मॉड्यूलस डिविजन काम कैसे करता है कैसे एक गर्म सांकेतिक शब्दों में बदलना संस्करण की लंबाई विशेषताएं? त्रुटि "gnu / stubs-32.h: ऐसी कोई फ़ाइल या निर्देशिका" Nachos स्रोत कोड संकलन करते समय (मकरपैच) PHP फ़ंक्शंस को बदलना संभव है? रिक्त समाप्त स्ट्रिंग के लिए तर्क क्या है? एक्सेल स्तंभ अक्षरों को सी # में उत्पन्न करने के लिए सबसे तेज़ कार्य क्या मुझे अपने एन्क्रिप्शन के साथ एक आरम्भिकरण वेक्टर (IV) का उपयोग करना चाहिए?

मैं शॉर्टहैंड का उपयोग कैसे करूँ / अगर अन्य?

मैंने इस पृष्ठ के उदाहरणों का उपयोग करने की कोशिश की है, लेकिन मैं किसी भी परिणाम का उत्पादन नहीं कर सकता

यह मेरा IF स्टेटमेंट है जो काम करता है:

if (!empty($address['street2'])) echo $address['street2'].'<br />'; 

और यह मेरा कोई भी काम नहीं कर रहा शॉर्टहैंड कोड है

 $test = (empty($address['street2'])) ? 'Yes <br />' : 'No <br />'; // Also tested this (empty($address['street2'])) ? 'Yes <br />' : 'No <br />'; 

मैं क्या गलत कर रहा हूं?

अद्यतन करें
ब्रियां टिप के बाद, मुझे पता चला कि गलत क्या हुआ। परीक्षा का गूंज करना परिणाम को परिणाम देता है तो फिर मैंने निम्नलिखित की कोशिश की:

 echo (empty($storeData['street2'])) ? 'Yes <br />' : 'No <br />'; 

और यह एक जादू की तरह काम किया!

वेब के समाधान से एकत्रित समाधान "मैं शॉर्टहैंड का उपयोग कैसे करूँ / अगर अन्य?"

 (condition) ? /* value to return if condition is true */ : /* value to return if condition is false */ ; 

सिंटैक्स "शॉर्टहैंड अगर" ऑपरेटर नहीं है (जो को सशर्त ऑपरेटर कहा जाता है) क्योंकि आप उसी तरीके से कोड निष्पादित नहीं कर सकते हैं जैसे कि आपने किया था:

 if (condition) { /* condition is true, do something like echo */ } else { /* condition is false, do something else */ } 

आपके उदाहरण में, आप echo स्टेटमेंट निष्पादित कर रहे हैं जब $address रिक्त नहीं है आप सशर्त ऑपरेटर के साथ ऐसा ही नहीं कर सकते। आप हालांकि क्या कर सकते हैं, सशर्त ऑपरेटर का परिणाम echo है:

 echo empty($address['street2']) ? "Street2 is empty!" : $address['street2']; 

और यह प्रदर्शित होगा "सड़क खाली है!" अगर यह खाली है, अन्यथा यह सड़क 2 पते प्रदर्शित करेगा।

मूल सही / गलत घोषणा

 $is_admin = ($user['permissions'] == 'admin' ? true : false); 

सशर्त स्वागत संदेश

 echo 'Welcome '.($user['is_logged_in'] ? $user['first_name'] : 'Guest').'!'; 

सशर्त आइटम संदेश

 echo 'Your cart contains '.$num_items.' item'.($num_items != 1 ? 's' : '').'.'; 

टर्नरी ऑपरेटर सिर्फ एक लघुकथ है और अगर / दूसरे ब्लॉक आपके कामकाजी कोड में कोई अन्य स्थिति नहीं है, इसलिए इसके लिए उपयुक्त नहीं है।

निम्न उदाहरण काम करेगा:

 echo empty($address['street2']) ? 'empty' : 'not empty'; 

PHP 7+

पीपीएडी 7 के अनुसार, यह काम केवल अशक्त सहकारी ऑपरेटर का उपयोग करके किया जा सकता है:

echo $address['street2'] ?? 'Empty';

सशर्त स्वागत संदेश

 echo 'Welcome '.($user['is_logged_in'] ? $user['first_name'] : 'Guest').'!'; 

नेस्टेड PHP शॉर्टहैंड

 echo 'Your score is: '.($score > 10 ? ($age > 10 ? 'Average' : 'Exceptional') : ($age > 10 ? 'Horrible' : 'Average') ); 

ध्यान दें कि नेस्टेड सशर्त ऑपरेटरों का उपयोग करते समय, आप संभावित समस्याओं से बचने के लिए कोष्ठक का उपयोग करना चाह सकते हैं !

ऐसा लगता है कि PHP उसी तरह काम नहीं करता जितना कम से कम जावास्क्रिप्ट या सी #

 $score = 15; $age = 5; // The following will return "Exceptional" echo 'Your score is: ' . ($score > 10 ? ($age > 10 ? 'Average' : 'Exceptional') : ($age > 10 ? 'Horrible' : 'Average')); // The following will return "Horrible" echo 'Your score is: ' . ($score > 10 ? $age > 10 ? 'Average' : 'Exceptional' : $age > 10 ? 'Horrible' : 'Average'); 

दोनों कोड में जावास्क्रिप्ट और सी # वापसी में एक ही कोड "असाधारण" है

दूसरे मामले में, PHP क्या करता है (या कम से कम यह कि मैं समझता हूं):

  1. $score > 10 ? हाँ
  2. $age > 10 ? नहीं, तो वर्तमान $age > 10 ? 'Average' : 'Exceptional' $age > 10 ? 'Average' : 'Exceptional' रिटर्न 'असाधारण'
  3. फिर, पूरे बयान को रोकना और 'असाधारण' लौटने की बजाय, यह अगले वक्तव्य का मूल्यांकन जारी रखता है
  4. अगले बयान 'Exceptional' ? 'Horrible' : 'Average' हो जाता है 'Exceptional' ? 'Horrible' : 'Average' 'Exceptional' ? 'Horrible' : 'Average' जो 'भयानक' देता है, जैसा कि 'असाधारण' सच है

प्रलेखन से: http://php.net/manual/en/language.operators.comparison.php

यह अनुशंसा की जाती है कि आप टर्नेटरी अभिव्यक्तियों के "स्टैकिंग" से बचें। एक ही वक्तव्य में एक से अधिक त्रिगुट ऑपरेटर का प्रयोग करते समय PHP का व्यवहार गैर-स्पष्ट है।

आप <?=?> लिए echo बजाय इसे कम कर सकते हैं

<?=(empty($storeData['street2'])) ? 'Yes <br />' : 'No <br />'?>

यह विशेष रूप से उपयोगी है, जब आप निर्धारित करना चाहते हैं, एक नवबार के अंदर, चाहे मेनू विकल्प को पहले से ही विज़िट किया गया क्लिक किया जाए या नहीं:

<li<?=($basename=='index.php' ? ' class="active"' : '')?>><a href="index.php">Home</a></li>

मुझे लगता है कि आपने ब्रैकेट को गलत तरीके से इस्तेमाल किया था। इसे इस्तेमाल करे:

 $test = (empty($address['street2']) ? 'Yes <br />' : 'No <br />'); 

मुझे लगता है कि यह काम करना चाहिए, आप इसका उपयोग भी कर सकते हैं:

 echo (empty($address['street2']) ? 'Yes <br />' : 'No <br />');