【问题标题】:Why doesn't this simple PHP if statement work, and how can I correct it?为什么这个简单的 PHP if 语句不起作用,我该如何纠正它?
【发布时间】:2011-11-30 12:02:59
【问题描述】:

这个 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 很陌生,所以在这里可能会非常厚,但任何建议都将不胜感激,谢谢 :)

【问题讨论】:

    标签: php html if-statement


    【解决方案1】:

    我相信第一个条件返回 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!';}
    
    ?>
    

    【讨论】:

    • 谢谢!这很好用,我没有意识到字符串等于零,但这很有意义:p 谢谢
    【解决方案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 标签是一个非常糟糕的主意。

    【讨论】:

    • 然而会导致同样的结果。
    • 好吧,我将 null 放在引号中,并尝试使用“null”以外的其他词,例如“零”。但这也不起作用:/
    【解决方案3】:

    你正在触及type juggling:的微妙之处

    var_dump(0 == 'null');
    var_dump('0' == 'null');
    

    ...打印:

    bool(true)
    bool(false)
    

    您可以做很多事情,但使用=== 运算符可能是最简单的。只需确保您使用的数据类型是一致的,即不要随意混用 0'0'

    【讨论】:

    • 类型杂耍?听起来很棒,感谢您向我学习表达方式!
    【解决方案4】:

    当您将字符串“null”与数字进行比较时,它会转换为数字。有关比较运算符,请参阅 PHP 文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多