循环通过数组并回显标题&每天的页脚

时间:2012-03-16 23:49:18

标签: php loops

这应该很简单,但我想我正在遇到心理障碍 - 我有一个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-&gt; day进行比较...这解决了标题,但是我应该怎样做以显示页脚?

2 个答案:

答案 0 :(得分:1)

只需在编写标题时写入页脚,然后在结尾处写一个页脚。

基本伪代码:

  1. 写标题,将$day设置为第一个值
  2. 每个活动
    1. 如果$day与当前事件的日期不同,请编写页脚,然后是标题
    2. 撰写活动信息
    3. 更新$day变量
  3. 写下页脚。

答案 1 :(得分:0)

你可以通过几个小的补充来实现这个技巧:

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 />";
}

这里的想法是“结束日”总是在“新的一天”之前,有两个例外:

  • 第一个“新的一天”
  • 之前没有“结束日”
  • 最后一个“结束日”(如果有的话)不在任何内容之前

这两个条件直接对应于这两种情况:如果你已经看到任何“新的一天”输出(可以非常方便地检查),那么你想要在“新的一天”和“结束日”之前,并结束输出方式相同。