这应该很简单,但我想我遇到了一个心理障碍——我有一个mysql数组,其中包含每个事件的日期和名称。我想要每个单独的"一天"都有一个页眉和页脚。所以它看起来像这样:
New Day
Event 1
Event 2
End Day
New Day
Event 3
Event 4
End Day
到目前为止,我的代码看起来是这样的,但我只能显示标题:
$day = null;
foreach($events as $event) {
if ($day != date('d', strtotime($event->date))) {
echo "New day:<br />";
}
echo $event->name;
$day = date('d', strtotime($event->date));
}
所以基本上我循环浏览并比较"$day"和$event->day。。。这解决了页眉,但我应该怎么做才能让页脚显示出来?
只需在编写页眉时编写页脚,然后在末尾编写一个即可。
基本伪码:
- 写入标头,将
$day
设置为第一个值 - 对于每个事件
- 如果
$day
与当前事件的日期不同,请写页脚,然后写页眉 - 写入事件信息
- 更新
$day
变量
- 如果
- 写页脚
您只需添加几个小的即可完成此操作:
foreach($events as $event) {
if ($day != date('d', strtotime($event->date))) {
if ($day !== null) { // ADDED THIS
echo "End day<br />";
}
echo "New day:<br />";
}
echo $event->name;
$day = date('d', strtotime($event->date));
}
if ($day !== null) { // ADDED THIS
echo "End day<br />";
}
这里的想法是"结束日"总是在"新的一天"之前,只有两个例外:
- 第一个"新的一天"之前没有"结束日"
- 最后一个"结束日"(如果有的话)不在任何事情之前
这两个条件直接对应于这两种情况:如果你看到了任何"新的一天"的输出(可以很方便地检查),那么你想在"新的日子"之前加上"结束的一天",并以同样的方式结束输出。