2008-08-05 15 views
22

मैं पृष्ठ तत्व को दिखाने या छिपाने के लिए ध्वज सेट करने का प्रयास कर रहा हूं, लेकिन अभिव्यक्ति झूठी होने पर भी यह हमेशा प्रदर्शित होती है।मेरी टर्नरी अभिव्यक्ति क्यों काम नहीं कर रही है?

$canMerge = ($condition1 && $condition2) ? 'true' : 'false'; 
... 
<?php if ($canMerge) { ?>Stuff<?php } ?> 

क्या हो रहा है?

उत्तर

38

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

हालांकि, यह एक अनियंत्रित टर्नरी अभिव्यक्ति है, क्योंकि परिणामस्वरूप मान सरल और गलत हैं। यह समकक्ष होगा:

$canMerge = ($condition1 && $condition2); 
2

'झूठा' का मूल्य सत्य है। आप उद्धरण हटाने की जरूरत:

$canMerge = ($condition1 && $condition2) ? true : false; 
+1

यह बहुत एक प्रतिष्ठा-खेती प्रयास की तरह लगता है। एक 3k-rep उपयोगकर्ता जो स्ट्रिंग और बुलियन के बीच अंतर नहीं कर सकता, जो इसे बनाने के एक मिनट बाद अपने प्रश्न का उत्तर देता है? – moo

+3

आपकी टिप्पणियों के लिए धन्यवाद ऑरलैंडो और एड। यह एक मुद्दा था जिसने मुझे पकड़ा और मैंने इसे मेरे और अन्य लाभ के लिए पोस्ट किया। अपने प्रश्नों का उत्तर देना एफएक्यू के अनुसार बिल्कुल ठीक है। हो सकता है कि आपको थोड़ी देर हो तो इसे फिर से पढ़ना चाहिए ... – Polsonby

0

मुझे एक उचित सवाल लगता है विशेष रूप से PHP काम करता है जिस तरह से विसंगति के कारण।

उदाहरण के लिए, निम्न कोड होगा उत्पादन 'अपनी झूठी'

$a = '0'; 

if($a) 
{ 
    echo 'its true'; 
} 
else 
{ 
    echo 'its false'; 
} 
-1
$canMerge = ($condition1 && $condition2); 

तो

if ($canMerge){ 
    echo "Stuff"; 
} 
+0

यह स्पष्ट नहीं करता कि समस्या वास्तव में क्या है, जिसे ओपी ने पूछा। –

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