26

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

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

这是怎么回事?

4

4 回答 4

41

这被破坏了,因为作为字符串的“假”将作为布尔值计算为真。

然而,这是一个不需要的三元表达式,因为结果值是简单的真假。这将是等效的:

$canMerge = ($condition1 && $condition2);
于 2008-08-05T01:03:12.553 回答
1

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

$canMerge = ($condition1 && $condition2) ? true : false;
于 2008-08-05T00:57:30.863 回答
0

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

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

$a = '0';

if($a)
{
    echo 'its true';
}
else
{
    echo 'its false';
}
于 2012-09-28T03:15:59.343 回答
-1
$canMerge = ($condition1 && $condition2);

然后

if ($canMerge){
    echo "Stuff";
}
于 2014-05-16T18:50:55.643 回答