关于php:为什么我的三元表达式不起作用?

关于php:为什么我的三元表达式不起作用?

Why is my ternary expression not working?

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

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

怎么了?


已被破坏,因为\\'false \\'作为字符串将被评估为true(布尔值)。

但是,这是不需要的三元表达式,因为结果值是简单的true和false。这将等效于:

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

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

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

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

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

1
2
3
4
5
6
7
8
9
10
$a = '0';

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

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

然后

1
2
3
if ($canMerge){
    echo"Stuff";
}

推荐阅读