在這裏我從數據庫表的行中訪問'日期'鍵值。我可以迴應這些價值觀,沒問題。循環數組值
$res = $mysqli->query("SELECT * FROM alfred ORDER BY id ASC");
$row = $res->fetch_all(MYSQLI_ASSOC);
foreach ($row as $key => $value){
$availDate = $value['date'];
echo $availDate.'<br />';
}
上述這個循環示出了從DB所有「日期」的值,在這種情況下,存在3 dates-「2012年9月25日」,「2012-09-27」和「2012年9月29日」。 但是之後我需要將這些'日期'值中的每一個值與$date->format('Y-m-d')
的值從下面的代碼中進行比較,並將每個日期以相應的「繁忙」或「可用」狀態顯示在表格的單獨<td>
中。我的下一個版本只比較'date'鍵的「最後」值 - 「2012-09-29」,但我需要比較上面數組中的每個'date'值,它也意味着「2012-09-25」和「2012-09-27」。我嘗試了很多版本,但仍然不成功。有任何想法嗎?
$date = new DateTime();
$endDate = new DateTime('+10 day');
for($date->format('Y-m-d'); $date->format('Y-m-d') < $endDate->format('Y-m-d'); $date->modify('+1 day')){
if ($date->format('Y-m-d') == $availDate){
echo '<td>'.$date->format('Y-m-d/D').' busy</td>';
} else {
echo '<td>'.$date->format('Y-m-d/D').' available</td>';
}
}
這是現在我得到的結果是:
2012-09-21/Fri available 2012-09-22/Sat available 2012-09-23/Sun available 2012-09-24/Mon available 2012-09-25/Tue available 2012-09-26/Wed available 2012-09-27/Thu available 2012-09-28/Fri available 2012-09-29/Sat busy 2012-09-30/Sun available
但實際上我需要顯示「忙碌」狀態也成「2012年9月25日」 <td>
和2012年的「<td>
-09-27「,因爲這些也是$ row數組中存在的'date'值。不幸的是,我不能在這裏發佈任何圖片來顯示,但我希望我的結果能夠讓您明白。
解決與in_array以下幫助:
$aAvailDate = array();
foreach ($row as $key => $value){
$aAvailDate[] = $value['date'];
}
$date = new DateTime();
$endDate = new DateTime('+10 day');
for($date->format('Y-m-d'); $date->format('Y-m-d') < $endDate->format('Y-m-d'); $date->modify('+1 day')){
if (in_array($date->format('Y-m-d'), $aAvailDate)){
echo '<td>'.$date->format('Y-m-d/D').' busy</td>';
} else {
echo '<td>'.$date->format('Y-m-d/D').' available</td>';
}
}
雖然你的問題不明確,但AFAIK 如果可用日期發生在給定日期之間,並且您想要檢查長達3周,您想要顯示「忙碌」。我對嗎? – diEcho
在SQL中進行日期檢查會不會更容易? – andrewsi
@raivis:嘗試使用MySQL解決方案。 – diEcho