Подтвердить что ты не робот

Почему мое тернарное выражение не работает?

Я пытаюсь установить флаг, чтобы показать или скрыть элемент страницы, но он всегда отображается, даже если выражение ложно.

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

Что?

4b9b3361

Ответ 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";
}