多个OR(||)和One&&在if语句中

时间:2014-09-16 06:22:06

标签: php mysql

它会起作用吗?我想通过chron job发送电子邮件。只有OR(||)的当前代码工作正常。现在我想在此语句中添加一个AND(&&)。这里$ fullDays有OR statemet +我需要检查for pay_confirm列应该包含" 0"。

它会起作用吗?

代码是 -

$date1= date("Y-m-d");
$date2=date("Y-m-d",strtotime($dateexpire['expiry_date']));
$dateDiff = strtotime($date2) - strtotime($date1);
$fullDays = floor($dateDiff/(60*60*24));

if (($fullDays =="7" || $fullDays =="6" || $fullDays =="5" || $fullDays =="4" || $fullDays =="3" || $fullDays =="2" || $fullDays =="1" || $fullDays =="0") && ($dateexpire["payment_confim"]=="0")){
    ob_start(); 

4 个答案:

答案 0 :(得分:4)

如果你亲自尝试过,那就最好了。是的,它会奏效。你的if语句有点乱,但检查每个单独的值并不是很有效。它不易维护,容易出错。如果你觉得if语句变得混乱,那么很可能是一种更简洁,更简单的方法。

$days = range(0,7);

if ( in_array($fullDays, $days) && $dateexpire["payment_confim"] == "0" ){
    ob_start(); 

这会让你的生活变得更轻松。但是你的当然也会工作。如果你不确定再读一下布尔人如何评价。这对生存至关重要。

答案 1 :(得分:0)

是的,这样可以正常工作,但它的工作非常复杂:

if($banana == 1&&$pear == 2||$mango == 7&& $strawberry == 3)
{
// if code goes here
}

答案 2 :(得分:0)

这样可行。

但是,除非你确实遇到问题,否则通常没有必要在这里提问。

如果您担心向订阅者发送错误的电子邮件,则应该在单独的服务器上测试新代码,该服务器不会错误地向任何客户端发送电子邮件。这样,即使代码存在问题,也没有人会知道,你可以毫无顾虑地修复它。

答案 3 :(得分:0)

您的代码肯定会有效。您似乎对测试代码感到困扰。作为开发人员,您需要使用虚拟数据进行测试,轻松处理这种情况。您只需声明$fullDays$dateexpire["payment_confim"]并指定以下值:

/*
$date1= date("Y-m-d");
$date2=date("Y-m-d",strtotime($dateexpire['expiry_date']));
$dateDiff = strtotime($date2) - strtotime($date1);
$fullDays = floor($dateDiff/(60*60*24));

*/
 //for testing, assign test value in the variable $fullDays and array $dateexpire["payment_confim"]
    $fullDays = 5;
    $dateexpire["payment_confim"] = 0;
    if (($fullDays =="7" || $fullDays =="6" || $fullDays =="5" || $fullDays =="4" || $fullDays =="3" || $fullDays =="2" || $fullDays =="1" || $fullDays =="0") && ($dateexpire["payment_confim"]=="0")){
        //ob_start(); 
        echo "Conditions met";
     }
     else
     {
      echo "Conditions not met";
     }