繁体   English   中英

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

[英]Why is my ternary expression not working?

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

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

这是怎么回事?

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

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

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

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

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

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

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

$a = '0';

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

您正在使用'true''false'作为字符串。 使用字符串(非空且不是'0'而不是' ' ,因为这些是空字符串并将被假定为假)作为条件将导致条件为true

我将写一些可以使用的正确条件:

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

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

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

然后

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM