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

StackOverflow https://stackoverflow.com/questions/1762

  •  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";
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top