【发布时间】:2010-09-05 07:56:34
【问题描述】:
我正在尝试设置一个标志来显示或隐藏页面元素,但即使表达式为假,它也始终显示。
$canMerge = ($condition1 && $condition2) ? 'true' : 'false';
...
<?php if ($canMerge) { ?>Stuff<?php } ?>
怎么了?
【问题讨论】:
标签: php ternary-operator
我正在尝试设置一个标志来显示或隐藏页面元素,但即使表达式为假,它也始终显示。
$canMerge = ($condition1 && $condition2) ? 'true' : 'false';
...
<?php if ($canMerge) { ?>Stuff<?php } ?>
怎么了?
【问题讨论】:
标签: php ternary-operator
这被破坏了,因为 'false' 作为字符串将评估为 true 作为布尔值。
但是,这是一个不需要的三元表达式,因为结果值是简单的真假。这将是等效的:
$canMerge = ($condition1 && $condition2);
【讨论】:
“假”的值为真。您需要删除引号:
$canMerge = ($condition1 && $condition2) ? true : false;
【讨论】:
在我看来这是一个合理的问题,尤其是因为 PHP 工作方式的差异。
例如,下面的代码将输出 'its false'
$a = '0';
if($a)
{
echo 'its true';
}
else
{
echo 'its false';
}
【讨论】:
$canMerge = ($condition1 && $condition2);
然后
if ($canMerge){
echo "Stuff";
}
【讨论】: