मैं पृष्ठ तत्व को दिखाने या छिपाने के लिए ध्वज सेट करने की कोशिश कर रहा हूं, लेकिन अभिव्यक्ति झूठी होने पर भी यह हमेशा प्रदर्शित होती है।
$canMerge = ($condition1 && $condition2) ? 'true' : 'false'; ... <?php if ($canMerge) { ?>Stuff<?php } ?>
क्या हो रहा है?
'झूठा' का मूल्य सच है। आपको उद्धरण हटाने की जरूरत है:
$canMerge = ($condition1 && $condition2) ? true : false;
यह टूटा हुआ है क्योंकि स्ट्रिंग के रूप में 'झूठा' एक बूलियन के रूप में सत्य का मूल्यांकन करेगा।
हालांकि, यह एक अनियंत्रित टर्नरी अभिव्यक्ति है, क्योंकि परिणामी मान सरल और गलत हैं। यह बराबर होगा:
$canMerge = ($condition1 && $condition2);
मुझे लगता है कि PHP काम करता है जिस तरह से विसंगति के कारण विशेष रूप से एक उचित सवाल लगता है।
उदाहरण के लिए, निम्न कोड 'इसके झूठे' आउटपुट करेगा
$a = '0'; if($a) { echo 'its true'; } else { echo 'its false'; }
फिर
if ($canMerge){ echo "Stuff"; }