truelie
@truelie

Как добавить запятую ко всем элементам в цикле кроме последнего?

Есть цикл:
<?php if ( have_rows( 'fifth-section' ) ) : ?>
		<?php while ( have_rows( 'fifth-section' ) ) : the_row(); ?>
		<?php if ( get_sub_field( 'display' ) == 1 ) { ?>
			"offers": {
				"@type": "AggregateOffer",
				"offers": [
				<?php if( have_rows('plans') ): ?>
				<?php 
					$loop_counter = 0;
					$count_block=1;
					while( have_rows('plans') ): the_row(); 
					if($loop_counter%4 == 0){
						if($loop_counter > 0){ 
						?>
					<?php } ?>
					<?php }
					$subtitle = get_sub_field('subtitle');
				?>							
				{
					"@type": "Offer",
					"name": "<?php echo $subtitle; ?>",
					"url": "<?php echo get_permalink(); ?>"
				},
				<?php 
					$loop_counter++;
					$count_block++;
					endwhile;
				?>
				<?php endif; ?>
			<?php } else { } ?>
			<?php endwhile; ?>
			<?php endif; ?>
			]
		}
	}


Который выводит кусок для разметки schema
"offers": {
			"@type": "AggregateOffer",
			"offers": [														
				{
					"@type": "Offer",
					"name": "Название",
					"url": "https://site.ru/assets/1"
				},
											
				{
					"@type": "Offer",
					"name": "Название 2",
					"url": "https://site.ru/assets/2"
				},
			]
		}
	}


Проблема в том, что у последнего элемента Offer после закрывающей скобки } не должно быть запятой. Элементов может быть от 1 до 4. Собственно вопрос, как прописать запятую всем элементам, кроме последнего (и, разумеется, вообще ее не добавлять, если элементов 1)?

Спасибо за рекомендации.
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
xEpozZ
@xEpozZ
Веб-разработчик
Добавьте if и сравните в нем "номер текущего элемента не равен номеру последнего"
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
лучше сформировать массив и вывести его с помощью json_encode, будет короче и читабельнее
Ответ написан
truelie
@truelie Автор вопроса
В общем, сам спросил - сам ответил, может кому пригодится. Не сразу сообразил, но гораздо легче добавить запятую перед каждым элементом, кроме первого). Примерно так в моем случае:
<?php if ($loop_counter > 0) echo ',' ?>

Вот так у меня работает корректно:
<?php if ( have_rows( 'fifth-section' ) ) : ?>
    <?php while ( have_rows( 'fifth-section' ) ) : the_row(); ?>
    <?php if ( get_sub_field( 'display' ) == 1 ) { ?>
      "offers": {
        "@type": "AggregateOffer",
        "offers": [
        <?php if( have_rows('plans') ): ?>
        <?php 
          $loop_counter = 0;
          while( have_rows('plans') ): the_row(); 
          if($loop_counter%4 == 0){
            if($loop_counter > 0){ 
            ?>
          <?php } ?>
          <?php }
          $subtitle = get_sub_field('subtitle');
        ?>
	<?php if ($loop_counter > 0) echo ',' ?>
        {
          "@type": "Offer",
          "name": "<?php echo $subtitle; ?>",
          "url": "<?php echo get_permalink(); ?>"
        },
        <?php 
          $loop_counter++;
          endwhile;
        ?>
        <?php endif; ?>
      <?php } else { } ?>
      <?php endwhile; ?>
      <?php endif; ?>
      ]
    }
  }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Алгоритмика Москва
от 110 000 до 160 000 руб.
Лучшие люди Иваново
от 40 000 до 90 000 руб.
N1.RU Новосибирск
от 100 000 руб.