鉴于以下内容
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
?
答案 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)
你需要安排你的条件。把你的第一个条件放在最后会解决问题。