在这里,我从 DB 表的行中访问“日期”键值。我可以回显这些值,没问题。
$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 个日期——“2012-09-25”、“2012-09-27”和“2012-09-29”。但随后我需要将这些“日期”值中的$date->format('Y-m-d')
每一个与下面代码中的值进行比较,并将每个日期与相应的“忙碌”或“可用”状态显示到单独<td>
的表格中。我的以下版本仅比较“日期”键的“最后一个”值 - “2012-09-29”,但我需要比较上面数组中的每个“日期”值,这也意味着“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
但事实上,我还需要在<td>
“2012-09-25”和<td>
“2012-09-27”中显示“忙碌”状态,因为这些也是 $row 数组中存在的“日期”值。不幸的是,我不能在这里发布任何图片来展示,但我希望我上面的结果能给你这个想法。
在下面的 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>';
}
}