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

голоса
21

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

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

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

Задан 05/08/2008 в 01:56
источник пользователем
На других языках...                            


4 ответов

голоса
37

Это сломано, потому что «ложь» как строка будет вычисляться верно как логическое.

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

$canMerge = ($condition1 && $condition2);
Ответил 05/08/2008 в 02:03
источник пользователем

голоса
2

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

$canMerge = ($condition1 && $condition2) ? true : false;
Ответил 05/08/2008 в 01:57
источник пользователем

голоса
0

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

Например, следующий выходной код будет «его ложь»

$a = '0';

if($a)
{
    echo 'its true';
}
else
{
    echo 'its false';
}
Ответил 28/09/2012 в 04:15
источник пользователем

голоса
-1
$canMerge = ($condition1 && $condition2);

тогда

if ($canMerge){
    echo "Stuff";
}
Ответил 16/05/2014 в 19:50
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more