【问题标题】:PHP Get every Nth item in loop but group them by sets of 6PHP在循环中获取每第N个项目,但按6个为一组进行分组
【发布时间】:2019-01-08 02:55:01
【问题描述】:

我正在使用 Slick Slider 来构建事件滑块。每个“幻灯片”由一组 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

【问题讨论】:

    标签: php arrays loops iteration slick.js


    【解决方案1】:

    您只需要检查计数器是否等于 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 } ?>
    

    【讨论】:

    • 谢谢,4 和 5 等其他人呢?
    • 在新测试中它们将分别变为 3 和 4,即 1 变为 0,2 变为 1,3 变为 2,4 变为 3,5 变为 4,6 变为 5。
    • 嗯,对不起,那看起来怎么样?感谢您抽出时间再次解释谢谢
    • 如何确定==后面的数字?
    • @cpcdev 查看我的编辑。我已经写出了整个循环。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 2021-09-16
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多