На каждой третьей итерации в PHP

Я хотел бы вывести определенный HTML-код на третьей итерации цикла в PHP. Вот мой код:

<?php foreach ($imgArray as $row): ?> <div class="img_grid"><?= $row ?></div> <?php endforeach; ?> 

На третьей итерации этого цикла вместо отображения:

 <div class="img_grid"><?= $row ?></div> 

Я бы хотел показать:

 <div class="img_grid_3"><?= $row ?></div> 

Я хотел бы закончить с этим, если мой массив зациклился 8 раз:

  <div class="img_grid">[some html]</div> <div class="img_grid">[some html]</div> <div class="img_grid_3">[some html]</div> <div class="img_grid">[some html]</div> <div class="img_grid">[some html]</div> <div class="img_grid_3">[some html]</div> <div class="img_grid">[some html]</div> <div class="img_grid">[some html]</div> 

благодаря

Предполагая, что $imgArray – это массив, а не ассоциативный массив (то есть он имеет числовые индексы), это то, что вы хотите:

 <?php foreach($imgArray as $idx => $row): ?> <?php if($idx % 3 == 2): ?> <div class="img_grid_3"><?php echo $row; ?></div> <?php else: ?> <div class="img_grid"><?php echo $row; ?></div> <?php endif; ?> <?php endforeach; ?> 

Вы можете немного подтянуть это:

 <?php foreach($imgArray as $idx => $row): if($idx % 3 == 2) { $css_class = 'img_grid_3'; } else { $css_class = 'img_grid'; } ?> <div class="<?php echo $css_class; ?>"><?php echo $row; ?></div> <?php endforeach; ?> 

Или даже больше (некоторые люди просто идут с тройной условной встроенной в HTML), но закон уменьшения убытков в конечном итоге приводит к удобочитаемости. Надеюсь, это дает вам правильную идею.