2011-04-25 80 views
0

我是新來的和php。
我修改了前段時間爲我完成的自定義腳本,可以根據文章的年份($ rdate)輸出不同的字體顏色(css)。我遇到的問題是迄今爲止只有2個功能工作,「if」和「else」工作,但「elseif」語句與「if」語句保持相同的方面。任何想法可能導致什麼?php多個返回

function pop_rdate($ps_id) { 
    global $link, $today, $base_url, $config; 
    $blog= f(q("SELECT * FROM blog WHERE ps_id='".$ps_id."'", $link)); 
      $rdate = date('F d, Y', $blog->review_date); 
      if (strtotime("now") > strtotime("+6 month", strtotime($rdate))) { 
    return "<span class='med'>".$rdate."</span>"; 
}    elseif (strtotime("now") > strtotime("+12 month", strtotime($rdate))) { 
    return "<span class='warning'>".$rdate."</span>"; 
}    else { 
    return "<span class='good'>".$rdate."</span>"; 
} 
} 

感謝您的幫助!

回答

1

strtotime("now") > strtotime("+12 month", strtotime($rdate)

也將strtotime("now") > strtotime("+6 month", strtotime($rdate))

所以你的情況是錯誤的。 A> 12也是> 6

您應該使用

if (strtotime("now") > strtotime("+12 month", strtotime($rdate))) { 
    return "<span class='warning'>".$rdate."</span>"; 
}    
elseif (strtotime("now") > strtotime("+6 month", strtotime($rdate))) { 
    return "<span class='med'>".$rdate."</span>"; 
}    else { 
    return "<span class='good'>".$rdate."</span>"; 
} 
+1

@harakiri:謝謝 – Gaurav 2011-04-25 07:50:35

+0

爲什麼我沒有想到這一點?非常感謝你,這很有用。 – 2011-04-25 07:53:53

0

這是因爲第一個if-statement將是作爲第二(ELSEIF)語句相同的價值觀如此。所以它永遠不會進入elseif正文。

if (strtotime("now") > strtotime("+12 month", strtotime($rdate))) { 

    return "<span class='warning'>".$rdate."</span>"; 

} elseif (strtotime("now") > strtotime("+6 month", strtotime($rdate))) { 

    return "<span class='med'>".$rdate."</span>"; 

} else { 

    return "<span class='good'>".$rdate."</span>"; 

}