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 } ?>
我正在使用 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 } ?>