【问题标题】:if statement with OR in phpphp中带有OR的if语句
【发布时间】:2013-10-26 20:12:12
【问题描述】:

我已经实现了以下内容,但对我来说没有意义……有人可以帮忙吗?

我想要以下内容:

如果monthsdue 不等于one_month_due 并且付款不是按固定订单,那么{ // 做点什么 }

但为了让它工作,我不得不使用 OR - 见下文

if(($monthsDue!=1) || ($Payment_Type!=STANDING_ORDER)){
    // send emails according to more criteria
}

例如 如果他们在一个月内到期但用现金或支票支付,那么应该会发生一些事情 如果他们是一个月到期并按常规付款,那么什么都不会发生 如果他们是 2 个月到期并按常规付款,则必须发生一些事情。

我很确定我错过了明显的东西!

【问题讨论】:

  • 你想要AND 而你使用了OR(或||)?!如果将|| 替换为&& 会怎样?
  • if (($monthsDue > 1) && ($Payment_Type !== "STANDING_ORDER) { // send emaills } 表示如果monthsdue大于1个月到期并且付款不等于STANDING_ORDER

标签: php if-statement operators


【解决方案1】:

你应该只需要替换你的 ||和 &&。

【讨论】:

    【解决方案2】:
    if(($monthsDue!=1) && ($Payment_Type!=STANDING_ORDER)){
        // send emails according to more criteria
    }
    

    && = AND,而 || = 或。

    http://php.net/manual/en/language.operators.logical.php

    但是,如果你使用 AND 和 OR,你最终会被这样的事情绊倒:

    $this = true;
    $that = false;
    
    $truthiness = $this and $that;
    

    想猜猜 $truthiness 等于什么?

    如果你说错了……错了!

    上面的$truthiness 的值为true。为什么? = 的优先级高于 and。添加括号以显示隐式顺序使这一点更清楚:

    ($truthiness = $this) and $that
    

    如果您在第一个代码示例中使用 && 而不是 and,它将按预期工作并且为 false。

    只是一些需要小心的事情!

    【讨论】:

      【解决方案3】:

      您需要更改此语句:

      if(($monthsDue!=1) || ($Payment_Type!=STANDING_ORDER))

      这意味着“如果monthsdue不等于one_month_due 付款不是按常规付款,那么{ //做某事}”

      但是你需要AND在那里

      所以用 AND 运算符(&&)替换你的 OR 运算符(||

      改成

      if(($monthsDue!=1) && ($Payment_Type!=STANDING_ORDER))

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-15
        • 2016-01-30
        • 2016-10-08
        • 1970-01-01
        相关资源
        最近更新 更多