这个if else语句不起作用:(在这种情况下,它显示'x is euqal to 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很陌生,所以这里可能非常厚,但任何建议都会非常感谢,谢谢:)
答案 0 :(得分:5)
我相信第一个条件返回true,因为字符串等于0.请参阅comparison operators上的文档。
解决方案是将==
替换为===
。例如:
<?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!';}
?>
答案 1 :(得分:2)
您的意思是null
还是字符串'null'
?我猜你的意思是价值null
,就像什么都没有。在这种情况下,您与'null'
的比较等于0,因为您“仅”使用==
,您应该使用严格比较,即===
。
习惯不使用else if
,而是使用elseif
。阅读更多the docs
您还应该努力改进语法,这非常令人困惑。
对于你的情况,我会检查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标签是一个非常糟糕的主意。
答案 2 :(得分:2)
你正在达到type juggling:
的微妙之处var_dump(0 == 'null');
var_dump('0' == 'null');
...打印:
bool(true)
bool(false)
你可以做很多事情,但使用===
运算符可能是最简单的。只需确保您使用数据类型一致,即不要随意混合0
和'0'
。
答案 3 :(得分:0)
将数字与数字进行比较时,字符串'null'将转换为数字。有关比较运算符,请参阅PHP文档