मेरी तीसरी अभिव्यक्ति क्यों काम नहीं कर रही है?

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

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

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

0
जोड़ा संपादित
विचारों: 2

4 उत्तर

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

$canMerge = ($condition1 && $condition2) ? true : false;
0
जोड़ा
ऑरलैंडो और एड की टिप्पणियों के लिए धन्यवाद। यह एक मुद्दा था जिसने मुझे पकड़ा और मैंने इसे मेरे और अन्य लाभ के लिए पोस्ट किया। अपने प्रश्नों का उत्तर देना एफएक्यू के अनुसार बिल्कुल ठीक है। हो सकता है कि अगर आपको थोड़ी देर हो तो आपको इसे फिर से पढ़ना चाहिए ...
जोड़ा लेखक Polsonby, स्रोत
यह एक प्रतिष्ठा-खेती के प्रयास की तरह लगता है। एक 3k-rep उपयोगकर्ता जो स्ट्रिंग और बुलियन के बीच अंतर नहीं कर सकता, जो इसे बनाने के एक मिनट बाद अपने प्रश्न का उत्तर देता है?
जोड़ा लेखक moo, स्रोत

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

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

$canMerge = ($condition1 && $condition2);
0
जोड़ा

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

उदाहरण के लिए, निम्न कोड 'इसके झूठे' आउटपुट करेगा

$a = '0';

if($a)
{
    echo 'its true';
}
else
{
    echo 'its false';
}
0
जोड़ा
$canMerge = ($condition1 && $condition2);

फिर

if ($canMerge){
    echo "Stuff";
}
0
जोड़ा
यह स्पष्ट नहीं करता कि समस्या वास्तव में क्या है, जिसे ओपी ने पूछा।
जोड़ा लेखक Wai Ha Lee, स्रोत