PHP if语句:所有条件都已批准

时间:2016-02-23 08:41:15

标签: php if-statement

我已经在我的脚本中检查了一个条件,但是我遇到了if语句的问题。请检查我的代码:

function __construct($user=null)
    {
       parent::__construct();
       require_once 'model/chanell_model.php';
       $this->theme->msg='.....';
       $this->db = new chanell_model();
       if ($user==null && !parent::isLog()){
           $this->themes=2;
       }elseif ($user===null){
           echo 'print';
       $this->db->getChanellData();

       }elseif($user!==null){
           echo 'print';

       }else{
           $this->db->getChanellData($user);
    }
}

如何才能同时$user == null$user != null。 在此代码中,两个echo命令都可以使用。

我还使用==代替===

抱歉我的英文。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

长长的呼吸

if ($user===null){ echo 'bye'; }else{ echo 'hi'; } 

如果这段代码会同时写'再见'和'嗨',那么是时候改变你的电脑......:)

更严重的是,

尝试调试您的代码,XDEBUG将成为您终生的朋友:) 对于即时测试,您可以运行构造函数,如下所示

function __construct($user = NULL) {
        parent::__construct();
        require_once 'model/chanell_model.php';
        $this->theme->msg   =   '.....';
        $this->db           =   new chanell_model();

        $debug          = TRUE;
        $executionId    = uniqid();
        $debugMessage   = '';

        if ((is_null($user)) && (!parent::isLog())){
            $this->themes=2;

            if ($debug) {
                $debugMessage .= "First condition executed, id: <" . $executionId . ">\n";
            }
        }
        elseif ($user===null){
            echo 'print';
            $this->db->getChanellData();
            if ($debug) {
                $debugMessage .= "Second condition executed, id: <" . $executionId . ">\n";
            }
        }
        elseif($user!==null){
            echo 'print';
            if ($debug) {
                $debugMessage .= "Third condition executed, id: <" . $executionId . ">\n";
            }
        }
        else{
            $this->db->getChanellData($user);
            if ($debug) {
                $debugMessage .= "Fourth condition executed, id: <" . $executionId . ">\n";
            }
        }
        if ($debug) {
            print $debugMessage;
        }
    }

您将看到,相同的执行ID(由uniid模拟)不能运行两次 另外:

  • 使用`NULL`而不是`null`
  • 测试值是否为null使用`is_null()`
  • 第四个条件永远不会运行!!

完成后不要忘记删除调试乱。