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

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

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

Что происходит?

5.08.2008 00:56:43
4 ОТВЕТА
РЕШЕНИЕ

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

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

$canMerge = ($condition1 && $condition2);
39
5.08.2008 01:16:21

Значение «ложь» является истинным. Вам нужно удалить цитаты:

$canMerge = ($condition1 && $condition2) ? true : false;
1
5.08.2008 00:57:30
Это так похоже на попытку завоевания репутации. Пользователь 3k-rep, который не может различить строку и логическое значение, который отвечает на его вопрос через минуту после того, как он это сделал?
moo 24.01.2009 03:26:35
Спасибо за ваши комментарии Орландо и Эд. Это была проблема, которая застала меня врасплох, и я опубликовал ее для себя и других. Ответы на ваши собственные вопросы прекрасно подходят для часто задаваемых вопросов. Может быть, вы должны прочитать его еще раз, если это было какое-то время ...
Polsonby 12.06.2009 21:11:47

На мой взгляд, это разумный вопрос, особенно из-за несоответствия работы PHP.

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

$a = '0';

if($a)
{
    echo 'its true';
}
else
{
    echo 'its false';
}
0
31.08.2015 16:03:15
$canMerge = ($condition1 && $condition2);

затем

if ($canMerge){
    echo "Stuff";
}
-1
7.02.2016 01:00:49
Это не объясняет, в чем на самом деле проблема, о которой спрашивал ОП.
Wai Ha Lee 7.02.2016 03:25:44