php逻辑'和'不符合逻辑。 (我在这里缺少什么)

时间:2014-10-08 13:49:02

标签: php

鉴于以下内容

expire date-> 2014-10-14 notify date-> 2014-10-06 current date-> 2014-10-08 Fine 
expire date-> 2014-10-07 notify date-> 2014-10-06 current date-> 2014-10-08 Expired 
expire date-> 2014-10-11 notify date-> 2014-10-06 current date-> 2014-10-08 Fine 
expire date-> 2014-10-05 notify date-> 2014-10-06 current date-> 2014-10-08 Expired 

和代码

FOR loop (each row)
    if ($expire date < $current_date) {
        echo "Expired <BR/>";
    } elseif (($expire date >= $notify_date) && ($expire date <= $current_date)) {
        echo "Warning <BR/>";
    } elseif ($expire date > $notify_date) {
        echo "Fine <BR/>";
    }
END FOR

为什么结果为 精细
过期
精细
过期

为什么expire date -> 2014-10-07无法打印Warning

4 个答案:

答案 0 :(得分:3)

这是因为$vid_date不到$current_date。它符合你的第一个条件,永远不会到达第二个。您通常需要安排这样的链式条件,从最具体到最常见。

答案 1 :(得分:1)

我认为问题在于你的第一个逻辑

 if (vid date < $current_date) {
        echo "Expired <BR/>";

尝试将其移至最后

答案 2 :(得分:1)

尝试从最具体到最不重复的方式重新排序您的支票:

FOR loop (each row)
    if ((expire date >= $notify_date) && (expire date <= $current_date)) {
        echo "Warning <BR/>";
    } elseif (expire date < $current_date) {
        echo "Expired <BR/>";
    } elseif (expire date > $notify_date) {
        echo "Fine <BR/>";
    }
END FOR

答案 3 :(得分:1)

你需要安排你的条件。把你的第一个条件放在最后会解决问题。