You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP foreach循环迭代中获取4次一循环的周期性值

PHP实现每4次迭代轮询CSS类与差异化内容方案

核心思路

固定数量内容循环轮询的逻辑不需要复杂判断,用取模(余数)运算即可实现:每4次为一组的规则,本质是计算当前迭代次数除以4的余数,匹配组内对应位置的预设内容即可,可无限循环。

基础实现代码

最贴合需求的1开始计数版本,逻辑直观易读:

<?php
// 预先按顺序定义每组4个位置对应的所有差异化内容,后续修改内容直接调整此处即可
$pollItems = [
    1 => [
        'cssClass' => 'class1',
        'svgContent' => '<svg>第1个位置的SVG元素</svg>'
    ],
    2 => [
        'cssClass' => 'class2',
        'svgContent' => '<svg>第2个位置的SVG元素</svg>'
    ],
    3 => [
        'cssClass' => 'class3',
        'svgContent' => '<svg>第3个位置的SVG元素</svg>'
    ],
    4 => [
        'cssClass' => 'class4',
        'svgContent' => '<svg>第4个位置的SVG元素</svg>'
    ]
];

// 示例:循环10次做测试,实际替换为你的业务循环总次数/遍历逻辑即可
$totalLoop = 10;
for ($i = 1; $i <= $totalLoop; $i++) {
    // 计算当前迭代在组内的位置:余0时对应第4位,其余情况直接取余数值
    $pos = $i % 4;
    if ($pos === 0) {
        $pos = 4;
    }
    $current = $pollItems[$pos];
    // 按需输出内容
    echo "<div class='{$current['cssClass']}'>{$current['svgContent']}</div>";
}

简洁优化版本

用0索引数组可以省掉余数为0的判断,代码更短:

<?php
// 0索引数组,顺序对应第1到第4次迭代的内容
$pollItems = [
    ['cssClass' => 'class1', 'svgContent' => '<svg>第1个SVG</svg>'],
    ['cssClass' => 'class2', 'svgContent' => '<svg>第2个SVG</svg>'],
    ['cssClass' => 'class3', 'svgContent' => '<svg>第3个SVG</svg>'],
    ['cssClass' => 'class4', 'svgContent' => '<svg>第4个SVG</svg>']
];

$totalLoop = 10;
for ($i = 1; $i <= $totalLoop; $i++) {
    // 计数偏移1位后取模,直接得到0-3的合法数组索引
    $index = ($i - 1) % 4;
    $current = $pollItems[$index];
    echo "<div class='{$current['cssClass']}'>{$current['svgContent']}</div>";
}

适配说明

  • 该逻辑不绑定固定循环结构:不管是用for、while遍历,还是遍历数据库结果集、文章列表,只要维护一个从1开始累加的计数器变量,就能套用这个逻辑
  • 扩展方便:如果后续要改成每3次、5次、N次为一组轮询,只需要修改取模运算的数字,同步调整预设轮询数组的元素数量即可,核心逻辑不需要改动
  • 可承载任意差异化内容:除了CSS类、SVG,文本、模板片段、图片路径等任何需要轮换的内容都可以放到预设数组中统一管理

内容的提问来源于stack exchange,提问作者Paolo Sacchetti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:54:23