PHP 获取循环中的每第 N 个项目,但将它们按 6 组分组

PHP Get every Nth item in loop but group them by sets of 6

我正在使用 Slick Slider 构建事件滑块。每个 "slide" 由一组 6 个不同大小的事件组成(如下图所示):

PHP:

<div id="eventsList">

    <div class="eventsGroup">

        <?php foreach ($events as $event) { ?>

            <? $counter++; ?>

            <?php if ($counter == 1) { ?>
                <div>
                    <div class="gridblock">
                        <div class="gridblock_inner">
                            <?php echo $event['name']; ?>
                        </div>
                    </div>
            <?php } ?>

            <?php if ($counter == 2) { ?>
                    <div class="gridblock sixty">
                        <div class="gridblock_inner no_right_margin">
                            <?php echo $event['name']; ?>
                        </div>
                    </div>
                </div>
            <?php } ?>

            <?php if ($counter == 3) { ?>
                <div style="width:66.666667%;float:left;">
                    <div class="gridblock onehundred">
                        <div class="gridblock_inner">
                            <?php echo $event['name']; ?>
                        </div>
                    </div>
            <?php } ?>

            <?php if ($counter == 4) { ?>
                    <div class="gridblock fifty">
                        <div class="gridblock_inner">
                            <?php echo $event['name']; ?>
                        </div>
                    </div>
            <?php } ?>

            <?php if ($counter == 5) { ?>
                    <div class="gridblock fifty">
                        <div class="gridblock_inner">
                            <?php echo $event['name']; ?>
                        </div>
                    </div>
                </div>
            <?php } ?>

            <?php if ($counter == 6) { ?>               
                <div style="width:33.333333%;float:left;">

                    <div class="gridblock onehundred twohigh">
                        <div class="gridblock_inner no_right_margin doublehigh">
                            <?php  echo $event['name']; ?>
                        </div>
                    </div>

                </div>
            <?php } ?>

        <?php } ?>

    </div>

</div>

光滑的滑块 JS:

$('#eventsList').slick({
  dots: true,
  arrows: false,
  infinite: true,
  slidesToShow: 1,
  slidesToScroll: 1
});

如果我在数组中只有 6 个项目,这段代码当然可以正常工作,但我想修改它以进行缩放,以便我可以添加任意数量的事件并使其遵循相同的分组模式它们以 6 个为一组。

我最初尝试过这样的模式:

if (($counter % 3) == 0) {
}

但这没有意义,因为它被分为 6 个。我怎样才能完成这个以便它可以扩展?提前谢谢你。

这是一个有效的 fiddle

您只需要检查计数器是否等于 0 到 5 模 6;将 $counter++ 移动到循环的末尾,并将每个比较替换为比 1 少的比较,例如

<?php if ($counter == 3) { ?>

变成

<?php if (($counter % 6) == 2) { ?>

所以你的整个循环将是:

    <?php foreach ($events as $event) { ?>
        <div class="eventsGroup">

        <?php if (($counter % 6) == 0) { ?>
            <div>
                <div class="gridblock">
                    <div class="gridblock_inner">
                        <?php echo $event['name']; ?>
                    </div>
                </div>
        <?php } ?>

        <?php if (($counter % 6) == 1) { ?>
                <div class="gridblock sixty">
                    <div class="gridblock_inner no_right_margin">
                        <?php echo $event['name']; ?>
                    </div>
                </div>
            </div>
        <?php } ?>

        <?php if (($counter % 6) == 2) { ?>
            <div style="width:66.666667%;float:left;">
                <div class="gridblock onehundred">
                    <div class="gridblock_inner">
                        <?php echo $event['name']; ?>
                    </div>
                </div>
        <?php } ?>

        <?php if (($counter % 6) == 3) { ?>
                <div class="gridblock fifty">
                    <div class="gridblock_inner">
                        <?php echo $event['name']; ?>
                    </div>
                </div>
        <?php } ?>

        <?php if (($counter % 6) == 4) { ?>
                <div class="gridblock fifty">
                    <div class="gridblock_inner">
                        <?php echo $event['name']; ?>
                    </div>
                </div>
            </div>
        <?php } ?>

        <?php if (($counter % 6) == 5) { ?>               
            <div style="width:33.333333%;float:left;">

                <div class="gridblock onehundred twohigh">
                    <div class="gridblock_inner no_right_margin doublehigh">
                        <?php  echo $event['name']; ?>
                    </div>
                </div>

            </div>
        <?php } ?>
        </div>
        <? $counter++; ?>

    <?php } ?>