На каждой третьей итерации в PHP - PullRequest
1 голос
/ 04 ноября 2010

Я хотел бы вывести какой-то конкретный 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>

Спасибо

1 Ответ

12 голосов
/ 04 ноября 2010

Предполагая, что $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), но закон убывающей отдачи в конечном счете вступает в действие в отношении читабельности.Надеюсь, что это дает вам правильную идею.

...