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

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

这是怎么回事?

有帮助吗?

解决方案

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

然而,这是一个不需要的三元表达式,因为结果值是简单的 true 和 false。这相当于:

$canMerge = ($condition1 && $condition2);

其他提示

“假”的值为真。您需要删除引号:

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

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

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

$a = '0';

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

然后

if ($canMerge){
    echo "Stuff";
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top