在嵌套的if语句中打破foreach

时间:2018-04-26 18:28:07

标签: php if-statement pdo foreach

我很难弄清楚如何在一个嵌套在foreach循环中的else语句中打破一个部分。

我想要脱离foreach循环的部分是:

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

问题在于它是else语句的一部分,但是当它只是希望它出现一次时,将它放在循环中只是让它反复复制。

有谁知道我该怎么做?

我尝试在else语句结束之前嵌套替代endforeach,但它只是破坏了代码。

有什么想法吗?

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>';
            echo '<div class="moreEventsContainer">
                    <div id="moreEventsWrap" class="total-center">
                        <span class="moreEventsLink">SEE ALL EVENTS</span>
                        <div class="rightArrow"></div>
                    </div>
                </div>'
            ;
        }
    }
    if ($noEvents != NULL) {
        echo $noEvents;
    } else {

    }

更新

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>'
            ;
        }
 }

1 个答案:

答案 0 :(得分:1)

根据您的更新, 我想你想要这个代码

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

在显示所有记录后执行一次。

因此,我建议使用此代替break语句

if($i==sizeof($event_rows)){
    echo '<div class="moreEventsContainer">
    <div id="moreEventsWrap" class="total-center">
      <span class="moreEventsLink">SEE ALL EVENTS</span>
          <div class="rightArrow"></div>
    </div>
  </div>';
}

$i初始化为1,每次循环执行时递增。

相关问题