这个if else语句不起作用:(在这种情况下,它显示'x等于null')
<?php
$x = 0;
if ($x == 'null'){
echo 'x is euqal to null';}
else if ($x == 0){
echo 'x is equal to zero!';}
else if ($x == 1){
echo 'x is equal to one!';}
?>
我需要这个的原因是我正在编写一个测验程序,其中一个功能是它在每个问题旁边显示一个勾号,叉号或三个点,这取决于用户是否做了以及他们的分数。
如果这个问题的得分= 'null',那么他们还没有做(显示…)如果这道题的得分为1,那么他们就答对了(显示勾号)。如果这道题的得分为0,那么他们没有答对,但答对了(显示交叉)
我的实际代码是:
$score = ($_SESSION['score']);
if ($score[$questionList[$loop]['ID']]=='null'){ ?>
<p style="display:inline;"> ... </p> <?php }
else if ($score[$questionList[$loop]['ID']]==1){ ?>
<p style="display:inline;"> ✓ </p> <?php }
else if ($score[$questionList[$loop]['ID']]==0){ ?>
<p style="display:inline;"> X </p> <?php } ?>
虽然它是一个更大的页面的一部分。
我是一个PHP新手,所以我可能在这里难以置信的厚,但任何建议将非常感激,谢谢:)
我相信第一个条件返回true,因为字符串等于0。参见比较操作符的文档。
解决方案是将==
替换为===
。例:
<?php
$x = 0;
if ($x === 'null'){
echo 'x is euqal to null';}
else if ($x === 0){ ''true
echo 'x is equal to zero!';}
else if ($x === 1){
echo 'x is equal to one!';}
?>
您是指null
还是字符串'null'
?我猜你的意思是值null
,就像没有一样。在这种情况下,您与'null'
的比较等于0,因为您"只"使用==
,所以您应该使用严格的比较,即===
。
使用elseif
而不是else if
是一个好习惯。阅读更多文档
你还应该改进你的语法,它很令人困惑。
对于您的情况,我会检查null作为最后一件事,而不是把它放在一个elseif中,而只是让它成为最后一种情况。这样的
$score = ($_SESSION['score']);
if ($score[$questionList[$loop]['ID']] === 1)
{
print '<p style="display:inline;"> ✓ </p>';
}
elseif ($score[$questionList[$loop]['ID']] === 0)
{
print '<p style="display:inline;"> X </p>';
}
else
{
print '<p style="display:inline;"> ... </p>';
}
总是打开和关闭你的php标签是一个非常糟糕的主意。
你正在触及类型杂耍的微妙之处:
var_dump(0 == 'null');
var_dump('0' == 'null');
…打印:
bool(true)
bool(false)
你可以做很多事情,但使用===
运算符可能是最简单的。只要确保您使用的数据类型是一致的,即不要随意混合0
和'0'
。
字符串'null'在与数字比较时被转换为数字。有关比较运算符,请参阅PHP文档。