【问题标题】:How to display a block of code at the end of a foreach loop only once如何在 foreach 循环结束时仅显示一次代码块
【发布时间】:2018-10-08 10:17:22
【问题描述】:

下面,我有以下 foreach 语句,其中嵌套了一个 if 语句。我遇到了一个我无法弄清楚的问题。

我希望将以下代码包含在 else-statement 中,但不包含在 foreach 循环中。我尝试了 break 函数,但它打破了我不想要的循环。我还尝试更改循环的结构,在else-statement 的结束括号之前包含一个endforeach,但这只是破坏了代码。

本质上,我只是希望我的 foreach 循环正常运行,然后让else-statement 填充moreEventsContainer。我想不出办法。

有人有什么想法吗?

  echo '<div class="moreEventsContainer">
          <div id="moreEventsWrap" class="total-center">
           <span class="moreEventsLink">SEE ALL EVENTS</span>
           <div class="rightArrow"></div>
         </div>
       </div>'

;

这是我想要输出的:

没有休息,它会这样做:

休息后,我只得到这个:

完整代码:

foreach ($event_rows as $event_row) {
    $event_name = $event_row['event_name'];
    $display_date = $event_row['display_date'];
    $event_description = $event_row['small_desc'];
    $end_date = new DateTime($event_row['end_date']);
    $date = new DateTime('now');
    if ($date >= $end_date) {
        //$noEvents = 'No events are scheduled yet.';
        $noEvents = '
        <div id="noEvents">
        </div>
        ';
    } else {
        echo '<div class="eventBlock">';
        echo '<div class="total-center eventBlockWrap">';
        echo '<span class="displayDate">'. $display_date .'</span>';
        echo '<span class="eventName">'. $event_name .'</span>';
        echo '<p class="dGsmall margNone">'. $event_description .'</p>';
        echo '</div>';
        echo '</div>';
        break;
        echo '<div class="moreEventsContainer">
                <div id="moreEventsWrap" class="total-center">
                    <span class="moreEventsLink">SEE ALL EVENTS</span>
                    <div class="rightArrow"></div>
                </div>
            </div>'
        ;
    }
}

【问题讨论】:

    标签: php if-statement pdo foreach


    【解决方案1】:

    尝试这样的事情,只需跟踪是否有任何事件,然后在循环外回显最后一个。

    $AtLeastOneEvent = false;
    foreach ($event_rows as $event_row) {
        $event_name = $event_row['event_name'];
        $display_date = $event_row['display_date'];
        $event_description = $event_row['small_desc'];
        $end_date = new DateTime($event_row['end_date']);
        $date = new DateTime('now');
        if ($date >= $end_date) {
            //$noEvents = 'No events are scheduled yet.';
            $noEvents = '
            <div id="noEvents">
            </div>
            ';
        } else {
            $AtLeastOneEvent = true;
            echo '<div class="eventBlock">';
            echo '<div class="total-center eventBlockWrap">';
            echo '<span class="displayDate">'. $display_date .'</span>';
            echo '<span class="eventName">'. $event_name .'</span>';
            echo '<p class="dGsmall margNone">'. $event_description .'</p>';
            echo '</div>';
            echo '</div>';           
         }
    }
    
    if ($AtLeastOneEvent == true) 
    {
     echo '<div class="moreEventsContainer">
                    <div id="moreEventsWrap" class="total-center">
                        <span class="moreEventsLink">SEE ALL EVENTS</span>
                        <div class="rightArrow"></div>
                    </div>
                </div>';
    }
    

    【讨论】:

    • 谢谢,这太完美了。
    猜你喜欢
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    • 2016-06-19
    • 2020-05-18
    相关资源
    最近更新 更多