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