Почему мое троичное выражение не работает? - PullRequest
23 голосов
/ 05 августа 2008

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

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

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

Ответы [ 4 ]

38 голосов
/ 05 августа 2008

Это не работает, потому что «false» как строка будет принимать значение true как логическое значение.

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

$canMerge = ($condition1 && $condition2);
1 голос
/ 05 августа 2008

Значение false равно true. Вам необходимо удалить цитаты:

$canMerge = ($condition1 && $condition2) ? true : false;
0 голосов
/ 16 мая 2014
$canMerge = ($condition1 && $condition2);

тогда

if ($canMerge){
    echo "Stuff";
}
0 голосов
/ 28 сентября 2012

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

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

$a = '0';

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