Пропустить строку в каждом цикле foreach

#php #foreach

#php #foreach

Вопрос:

Я создал слайдер для отображения списка баскетбольных матчей. У меня это работает, и в настоящее время на моем веб-сайте это выглядит так:

Слайдер веб-сайта

Я использую следующий цикл foreach для отображения данных.

     <?php 
    
    uasort($json['response']['data'], function ($a, $b) {
        if ($a['matchTime']==$b['matchTime']) return 0;
        return $a['matchTime']>$b['matchTime'] ? 1 : -1;
        });

    foreach($json['response']['data'] as $item) {
        if ($item['competitionName'] == 'Junior SS Premiership Zone 3' ) {
            continue;}
        if ($item['competitionName'] == 'CSW Division 1' ) {
        continue;}
        if ($item['competitionName'] == 'Season Showdown 19' ) {
        continue;}
        if ($item['competitionName'] == 'SS19 Challengers' ) {
        continue;}
        if ($item['competitionName'] == 'SS20 Challengers' ) {
        continue;}
        if ($item['competitionName'] == 'SS20 Pre-Season' ) {
        continue;}
        if ($item['competitionName'] == 'Schick AA Zone 3 Premierships' ) {
        continue;}
        if ($item['competitionName'] == 'New World Series 2018' ) {
        continue;}
        if ($item['competitionName'] == 'SS18 Challengers' ) {
        continue;}
    
        print'
        
        <li class="item">
                        <a class="item-link" href="/schedule">
                            <div class="game-meta game-date date-format">
                                <span class="date-month">'; $matchtime = $item['matchTime']; echo date('M', strtotime($matchtime)); print'</span>'; $matchtime = $item['matchTime']; echo date('j', strtotime($matchtime));
                            print '</div>';
                            
                            foreach ($item["competitors"] as $teams){
                            
                            print '
                            <div class="game-meta game-team">
                                <img class="game-team__logo game-team__logo-tc" alt="Tawa" src="https://summerseries.nz/wp-content/themes/SS/logos/'; echo $teams['teamCode']; print '.svg">
                                <div class="game-team__abbrev">'; echo $teams['teamCode']; print'</div>
                            </div>
                            <div class="game-meta game-vs">vs</div>';
                            
                            };
                            
                           print ' <div class="game-time">'; $matchtime = $item['matchTime']; echo date('g:i A', strtotime($matchtime)); print'</div>
                        </a>
                    </li>';


    
} ?>
  

Он работает нормально. Я получаю данные, но мой цикл foreach показывает <div class="game-meta game-vs">vs</div> дважды, что должен делать foreach. Я хочу удалить это, чтобы оно отображалось только в середине. Прямо сейчас изображение показывает КОМАНДУ против КОМАНДЫ, против которой оно должно показывать только КОМАНДУ против КОМАНДЫ.

Есть какой-нибудь способ сделать это? Я пытался сделать это переменной в разделе continue, но ему это не понравилось.

Спасибо!

Комментарии:

1. если $item [«конкуренты»] всегда содержит 2 элемента, я чувствую, что вам не нужен цикл for там.

2. да. просто используйте два print , чтобы решить эту проблему ~

3. Не ваш вопрос, НО вы могли бы значительно упростить это, поместив все continue значения в массив, используя in_array with $item['competitionName'] .

4. а также проверьте php.net/manual/en/function.next.php функция. это также может соответствовать вашим потребностям.

5. @user3783243 это неплохая идея! Я поработаю над этим, это может немного помочь! Спасибо!

Ответ №1:

рад помочь!

Кажется, что в игре участвуют только две команды, поэтому просто измените код С:

                             foreach ($item["competitors"] as $teams){
                            print '
                            <div class="game-meta game-team">
                                <img class="game-team__logo game-team__logo-tc" alt="Tawa" src="https://summerseries.nz/wp-content/themes/SS/logos/'; echo $teams['teamCode']; print '.svg">
                                <div class="game-team__abbrev">'; echo $teams['teamCode']; print'</div>
                            </div>
                            <div class="game-meta game-vs">vs</div>';
                            
                            };
  

Для:

                             print '
                            <div class="game-meta game-team">
                                <img class="game-team__logo game-team__logo-tc" alt="Tawa" src="https://summerseries.nz/wp-content/themes/SS/logos/'; echo $item["competitors"][0]['teamCode']; print '.svg">
                                <div class="game-team__abbrev">'; echo $item["competitors"][0]['teamCode']; print'</div>
                            </div>
                            <div class="game-meta game-vs">vs</div>';
                            print '
                            <div class="game-meta game-team">
                                <img class="game-team__logo game-team__logo-tc" alt="Tawa" src="https://summerseries.nz/wp-content/themes/SS/logos/'; echo $item["competitors"][1]['teamCode']; print '.svg">
                                <div class="game-team__abbrev">'; echo $item["competitors"][1]['teamCode']; print'</div>
                            </div>';
  

Если в игре участвуют более 2 команд, пожалуйста, скажите мне, и я изменю решение

Желаю вам хорошего дня ~

Ответ №2:

Подсчитайте, сколько раз вы прошли цикл, и выводите «vs» <div> только в том случае, если вы не на последней итерации:

 $i = 0; // How many teams we've printed so far

foreach ($item["competitors"] as $teams){
    print '
        <div class="game-meta game-team">
          <img class="game-team__logo game-team__logo-tc" alt="Tawa" src="https://summerseries.nz/wp-content/themes/SS/logos/'; echo $teams['teamCode']; print '.svg">
          <div class="game-team__abbrev">'; echo $teams['teamCode']; print'</div>
        </div>
  ';

  if (   $i < sizeof($item["competitors"]) ) {
    print '
        <div class="game-meta game-vs">vs</div>
    ';
  }
}