为什么这个简单的PHP if语句不起作用,我该如何纠正呢?

时间:2011-11-30 12:02:59

标签: php html if-statement

这个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;"> &#10003  </p> <?php }      
        else if ($score[$questionList[$loop]['ID']]==0){ ?>
             <p style="display:inline;"> X  </p> <?php }  ?>  

虽然它是更大页面的一部分。

我对PHP很陌生,所以这里可能非常厚,但任何建议都会非常感谢,谢谢:)

4 个答案:

答案 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;"> &#10003  </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文档