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

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

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

这是怎么回事?

0
额外 编辑
意见: 3

4 答案

'false'的值是真的。您需要删除引号:

$canMerge = ($condition1 && $condition2) ? true : false;
0
额外
感谢您的评论奥兰多和埃德。这是一个引起我注意的问题,我将它发布给我和其他人的好处。根据常见问题回答自己的问题是完美的。也许你应该再读一遍,如果它已经有一段时间了......
额外 作者 Polsonby,
这似乎是一种声誉农业的尝试。一个3k-rep用户谁不能区分一个字符串和一个布尔值,他在一分钟后回答他的问题?
额外 作者 moo,

这被打破了,因为作为一个字符串的'false'将作为布尔值计算为true。

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

$canMerge = ($condition1 && $condition2);
0
额外

对我来说似乎是一个合理的问题,尤其是因为PHP工作方式的差异。

例如,下面的代码会输出“它的错误”

$a = '0';

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

然后

if ($canMerge){
    echo "Stuff";
}
0
额外
这并不能解释OP问的实际问题。
额外 作者 Wai Ha Lee,