@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)?

Спасибо за рекомендации.
  • Вопрос задан
  • 1291 просмотр
Решения вопроса 1
xEpozZ
@xEpozZ
Веб-разработчик
Добавьте if и сравните в нем "номер текущего элемента не равен номеру последнего"
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
лучше сформировать массив и вывести его с помощью json_encode, будет короче и читабельнее
Ответ написан
Комментировать
@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; ?>
      ]
    }
  }
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы