Выход из foreach внутри вложенного оператора if - PullRequest
0 голосов
/ 26 апреля 2018

Мне трудно понять, как разбить раздел из оператора else, вложенного в цикл foreach.

Раздел, который я хочу вырвать из цикла 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, но, оставляя его в цикле, он просто дублирует себя снова и снова, когда я просто хочу, чтобы он появился один раз.

Кто-нибудь видит, как я могу это сделать?

Я пытался сделать альтернативу endforeach, вложенную до конца оператора 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>';
            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 голосов
/ 26 апреля 2018

Согласно вашему обновлению, Я полагаю, вы хотите этот код

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 и увеличивается каждый раз при выполнении цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...