2010-04-23 21 views
21
($DAO->get_num_rows() == 1) ? echo("is") : echo("are"); 

यह खुराक मेरे लिए काम करने के लिए प्रतीत नहीं होता है, मुझे एक त्रुटि "अप्रत्याशित T_ECHO" मिलती है। मुझे उम्मीद है कि यह 'है' या 'हैं' को गूंजने की उम्मीद है।टर्नरी ऑपरेटर स्टेटमेंट में "अप्रत्याशित T_ECHO" समस्या निवारण

मैंने सशर्त के आस-पास के ब्रैकेट के बिना इसे आजमाया है। क्या मैं इस तरह से एक टर्नरी ऑपरेटर का उपयोग करने में सक्षम नहीं हूं?

$DAO->get_num_rows() एक पूर्णांक मान देता है।

+2

टेम्पलेट का उपयोग करने पर विचार करें, व्यापार से नहीं प्रत्यक्ष उत्पादन –

उत्तर

46

टर्नरी ऑपरेटर एक if-then के समान नहीं है। आप इसे

echo ($DAO->get_num_rows() == 1) ? "is" : "are"; 

यह 2 या 3 की स्थिति में मूल्य रिटर्न लिखा जाना चाहिए था। यह दूसरी या तीसरी स्थिति में कथन निष्पादित नहीं करता है।

+1

logig यह मूल्य, क्यों करता है, तो आप की जगह '' print' यह काम करता है द्वारा echo' देता है, तो? – Mageek

+0

@ मैगेक - यह "काम करता है"? या यह मर नहीं जाता है? सिर्फ इसलिए कि यह कुछ प्रिंट करता है इसका मतलब यह नहीं है कि यह ओपी चाहता था। मेरी सिफारिश का इरादा क्या था। – MJB

+1

मैं समझना चाहता था कि क्यों '($ DAO-> get_num_rows() == 1)? प्रिंट ("है"): प्रिंट ("हैं"); 'काम करता है, लेकिन '($ डीएओ-> get_num_rows() == 1)? गूंज ("है"): गूंज ("हैं"); 'नहीं। – Mageek

0

यू उपयोग कर सकते हैं

गूंज ($ DAO-> get_num_rows() == 1)? "है हैं";

6

टर्नरी ऑपरेटर के परिणामस्वरूप मूल्य होना चाहिए - और इसे गूंजना नहीं चाहिए।

if ($DAO->get_num_rows() == 1) { 
    echo "is"; 
} else { 
    echo "are" 
} 

:

echo ($DAO->get_num_rows() == 1) ? "is" : "are"; 


आप दो echo का उपयोग करना चाहते हैं, तो आप एक if/else ब्लॉक के साथ काम करना होगा:


यहाँ, आप शायद इस चाहते हैं जो टर्नरी ऑपरेटर का उपयोग कर कोड के पहले भाग के समान ही काम करेगा - सिवाय इसके कि यह थोड़ी देर तक है।

2

टर्नरी ऑपरेटर शर्तों का मूल्यांकन करने के बाद दो मानों में से एक देता है। इसका उपयोग उस तरीके से नहीं किया जाना चाहिए जिसका आप इसका उपयोग कर रहे हैं।

यह काम करना चाहिए:

echo ($DAO->get_num_rows() == 1 ? "is" : "are"); 
संबंधित मुद्दे