Почему мое троичное выражение не работает?
Я пытаюсь установить флаг для отображения или скрытия элемента страницы, но он всегда отображается, даже если выражение является ложным.
$canMerge = ($condition1 && $condition2) ? 'true' : 'false';
...
<?php if ($canMerge) { ?>Stuff<?php } ?>
В чем дело?
22
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