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