if 语句在 PHP 中带有 OR 语句


if statement with OR in php

以下内容我已经实现,但对我来说没有意义...谁能帮忙?

我想要以下内容:

如果到期月份不等于one_month_due 并且不是通过长期订单付款,则{ 做点什么}

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

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

例如如果他们到期一个月,但以现金或支票支付,那么应该会发生一些事情如果他们有一个月的到期时间并通过常规订单付款,那么应该什么都不会发生如果他们有 2 个月的到期时间并通过长期订单付款,则必须发生一些事情。

我很确定我错过了显而易见的!

你只需要用 &&. 替换你的 ||

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

&= AND,而 || = OR。

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。

只是要小心的事情!

您需要更改此语句:

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

这意味着"如果到期月数不等于one_month_due付款不是通过长期订单,那么{//做某事}"

但是你需要那边

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

将其更改为

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