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

Php 为什么我的三元表达式不起作用?,php,ternary-operator,Php,Ternary Operator,我试图设置一个标志来显示或隐藏页面元素,但它总是显示,即使表达式为false $canMerge = ($condition1 && $condition2) ? 'true' : 'false'; ... <?php if ($canMerge) { ?>Stuff<?php } ?> $canMerge=($condition1&&$condition2)?”真’:‘假’; ... 东西 怎么了?false的值是true。您需要删除引号: $can

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

$canMerge = ($condition1 && $condition2) ? 'true' : 'false';
...
<?php if ($canMerge) { ?>Stuff<?php } ?>
$canMerge=($condition1&&$condition2)?”真’:‘假’;
...
东西

怎么了?

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

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

这是错误的,因为作为字符串的“false”将作为布尔值计算为true

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

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

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

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

$a = '0';

if($a)
{
    echo 'its true';
}
else
{
    echo 'its false';
}
然后


这似乎是一次声誉农业的尝试。一个3k代表用户,他不能区分字符串和布尔值,他在提问一分钟后回答了他的问题?感谢你的评论Orlando和Ed。这是一个让我很感兴趣的问题,为了我和其他人的利益,我发布了它。根据常见问题解答,回答您自己的问题完全可以。如果有一段时间了,也许你应该再读一遍……这并不能解释问题的真正原因,正如OP所问。
$canMerge = ($condition1 && $condition2);
if ($canMerge){
    echo "Stuff";
}