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

时间:2008-08-05 00:56:44

标签: php ternary-operator

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

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

怎么了?

4 个答案:

答案 0 :(得分:38)

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

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

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

$a = '0';

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

答案 3 :(得分:-1)

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

然后

if ($canMerge){
    echo "Stuff";
}