Я пытаюсь установить флажок, чтобы показать или скрыть элемент страницы, но он всегда отображается, даже если выражение ложно.
$canMerge = ($condition1 && $condition2) ? 'true' : 'false'; ... <?php if ($canMerge) { ?>Stuff<?php } ?>
Что случилось?
Это не работает, потому что «false» как строка будет принимать значение true как логическое значение.
Однако это ненужное троичное выражение, потому что получающиеся значения являются простыми значениями true и false. Это будет эквивалентно:
$canMerge = ($condition1 && $condition2);
Значение false равно true. Вам необходимо удалить цитаты:
$canMerge = ($condition1 && $condition2) ? true : false;
тогда
if ($canMerge){ echo "Stuff"; }
Мне кажется разумным вопрос, особенно из-за несоответствия в том, как работает PHP.
Например, следующий код выведет «false»
$a = '0'; if($a) { echo 'its true'; } else { echo 'its false'; }