PHP 每隔 2 行向 2 行添加一个 class 的逻辑

PHP logic to add a class to 2 rows every other 2 rows

任何人都可以帮助我在下面的代码中每两行添加一个 class .col-md-offset-2 的逻辑...

<?php while(have_rows('report_quotes')): the_row(); ?>

  <div class="col-md-12 <?php // help me ?>">

     <?php /* quote */ ?>
     <?php Post::get_template_part('sections/quote'); ?>

  </div>

<?php endwhile; ?>

因此输出将如下所示...

<div class="col-md-12">...</div>
<div class="col-md-12">...</div>
<div class="col-md-12 col-md-offset-2">...</div>
<div class="col-md-12 col-md-offset-2">...</div>
<div class="col-md-12">...</div>
<div class="col-md-12">...</div>
<div class="col-md-12 col-md-offset-2">...</div>
<div class="col-md-12 col-md-offset-2">...</div>
<div class="col-md-12">...</div>
<div class="col-md-12">...</div>
<div class="col-md-12 col-md-offset-2">...</div>
<div class="col-md-12 col-md-offset-2">...</div>
...

有人能帮忙吗?

谢谢

添加一个跟踪当前循环索引的指针,并使用模运算符检查它是迭代中的第 3 个还是第 4 个。

像这样:

<?php 
    $i = -1;
    while(have_rows('report_quotes')): the_row();
    $i++;
?>

    <div class="col-md-12
        <?php if ( ($i % 4) == 2 || ($i % 4) == 3 ) { echo 'col-md-offset-2'; } ?> ">

        <?php /* quote */ ?>
        <?php Post::get_template_part('sections/quote'); ?>

    </div>

<?php endwhile; ?>

您可以使用取模运算符 (%)

<?php $i = 0; while($i < 6): ++$i; ?>
 <div class="col-md-12 <?=in_array($i % 4, array (0,3)) ? 'col-md-offset-4' : null ?>">...</div>
<?php endwhile; ?>

所以在你的情况下 -

<?php $i = 0; while(have_rows()): the_row(); ++$i; ?>
 <div class="col-md-12 <?=in_array($i % 4, array (0,3)) ? 'col-md-offset-4' : null ?>">
    <?php /* quote */ ?>
    <?php Post::get_template_part('sections/quote'); ?>
 </div>
<?php endwhile; ?>

这实际上是获取每个增量的余数,在我们的例子中,我们知道如果余数是 0(可被 4 整除)或 3,那么它应该缩进。

添加一个计数器以了解您在数组的哪一行并使用模数:

<?php 
$i = 0;
while(have_rows('report_quotes')): the_row(); ?>

   <div class="col-md-12 <?php if (($i%4==2)||($i%4==3) {echo ' col-md-offset-2'; } ?> ?>">


     <?php Post::get_template_part('sections/quote'); ?>

  </div>

<?php endwhile; ?>