Сведения о вопросе

Fhohir

16:03, 1st July, 2020

Теги

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

Просмотров: 385   Ответов: 4

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

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

Что случилось?



  Сведения об ответе

ASSembler

18:03, 1st July, 2020

Это нарушается, потому что 'false' как строка будет оцениваться как true как логическое значение.

Однако это ненужное тернарное выражение, поскольку результирующие значения являются простыми true и false. Это было бы эквивалентно:

$canMerge = ($condition1 && $condition2);


  Сведения об ответе

$DOLLAR

18:03, 1st July, 2020

Значение 'false' является истинным. Вам нужно удалить кавычки:

$canMerge = ($condition1 && $condition2) ? true : false;


  Сведения об ответе

pumpa

18:03, 1st July, 2020

Мне кажется разумным вопросом, особенно из-за несоответствия в том, как работает PHP.

Например, следующий код выведет 'its false'

$a = '0';

if($a)
{
    echo 'its true';
}
else
{
    echo 'its false';
}


  Сведения об ответе

padenie

18:03, 1st July, 2020

$canMerge = ($condition1 && $condition2);

затем

if ($canMerge){
    echo "Stuff";
}


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться