php -为什么我的三元表达式不起作用?

Translate

我试图设置一个标志以显示或隐藏页面元素,但是即使表达式为false,它也始终显示。

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

这是怎么回事?

This question and all comments follow the "Attribution Required."

所有的回答

Translate

这是被破坏的,因为作为字符串的“ false”将作为布尔值评估为true。

但是,这是不需要的三元表达式,因为结果值是简单的true和false。这将是等效的:

$canMerge = ($condition1 && $condition2);
来源
Translate

“ false”的值为true。您需要删除引号:

$canMerge = ($condition1 && $condition2) ? true : false;
来源
Translate

在我看来,这是一个合理的问题,尤其是因为PHP的工作方式存在差异。

例如,以下代码将输出“ false”

$a = '0';

if($a)
{
    echo 'its true';
}
else
{
    echo 'its false';
}
来源
Translate
$canMerge = ($condition1 && $condition2);

然后

if ($canMerge){
    echo "Stuff";
}
来源
上一个问题:
c# -.NET单元测试包?