【问题标题】:On every third iteration in PHP在 PHP 中的每三次迭代
【发布时间】:2011-05-04 19:53:15
【问题描述】:

我想在 PHP 循环的第三次迭代中输出一些特定的 HTML。这是我的代码:

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

谢谢

【问题讨论】:

    标签: php loops iteration


    【解决方案1】:

    假设 $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 中使用三元条件内联),但收益递减法则最终会在可读性方面发挥作用。不过,希望这能给您正确的想法。

    【讨论】:

    • 这是一些有趣的语法和标点符号。
    • 这是标准的 PHP 语法。您可以消除一些
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 2014-07-06
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    相关资源
    最近更新 更多