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


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

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

В чем дело?

Author: Jim Anderson, 2008-08-05

4 answers

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

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

$canMerge = ($condition1 && $condition2);
 38
Author: Rudd Zwolinski, 2008-08-05 01:16:21

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

$canMerge = ($condition1 && $condition2) ? true : false;
 2
Author: Polsonby, 2008-08-05 00:57:30

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

Например, следующий код выведет "его ложь"

$a = '0';

if($a)
{
    echo 'its true';
}
else
{
    echo 'its false';
}
 0
Author: depz123, 2015-08-31 16:03:15
$canMerge = ($condition1 && $condition2);

Затем

if ($canMerge){
    echo "Stuff";
}
 -1
Author: Anowar Hossain, 2016-02-07 01:00:49