簡體   English   中英

PHP的邏輯“和”不合邏輯。 (我在這里想念什么)

[英]php logical 'and' not logical. (what am I missing here)

鑒於以下

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

這是因為$vid_date $current_date 它滿足您的第一個條件,而從未達到第二個條件。 通常,您需要從最具體到最一般地安排這樣的鏈接條件。

我認為問題在於您的第一個邏輯

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

嘗試將其移至最后

嘗試將支票從最具體的順序重新排列到最小順序:

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

您需要安排條件。 將您的第一個條件放在最后可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM