Почему мое тернарное выражение не работает?
Я пытаюсь установить флаг, чтобы показать или скрыть элемент страницы, но он всегда отображается, даже если выражение ложно.
$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";
}