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

如何在PHP的foreach/for循环中为第3、4项添加HTML闭合标签

问题描述

我有一个设计方案需要在foreach循环中落地实现,设计效果如下:
设计效果图

我需要在循环过程中,每处理到第3、第4个值时添加对应的HTML闭合标签,请问有没有可行的实现方案?

示例数组

$array = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21);

现有尝试代码

$tmp = '';
$count = 1;
foreach($array as $val){    
    if($tmp == 1){        
        echo "Second Box".$val."<br>";        
        $tmp=0;        
        $count++;    
    }else{        
        if($count % 2 == 0){            
            echo "Second Box".$val."<br>";            
            $tmp = 1;        
        }else{            
            echo "First Box".$val."<br>";        
        }    
    }    
    $count++;
}

当前输出结果

First Box1<br>
Second Box2<br>
Second Box3<br>
<br>
First Box4<br>
Second Box5<br>
Second Box6<br>
<br>
First Box7<br>
Second Box8<br>
Second Box9<br>
<br>
First Box10<br>
Second Box11<br>
Second Box12<br>
<br>
First Box13<br>
Second Box14<br>
Second Box15<br>
<br>
First Box16<br>
Second Box17<br>
Second Box18<br>
<br>
First Box19<br>
Second Box20<br>
Second Box21

当前输出效果如下:
当前输出效果图


解决方案

你现有代码的问题是计数逻辑混乱,没有按每4个元素为一组的规则做拆分。可以按每4个元素为一组遍历,组内第3、4个元素处理完成后输出对应的闭合标签即可,实现代码如下:

$count = 0;
// 数组总长度,用于最后收尾判断
$total = count($array);
// 标记Second Box是否已打开
$isSecondBox = false;
// 输出首个First Box开标签,替换为你实际用的HTML标签即可
echo '<div class="first-box">';

foreach ($array as $val) {
    $count++;
    // 到每组第3个元素时,关闭First Box,打开Second Box
    if ($count % 4 == 3 && !$isSecondBox) {
        echo '</div>'; // First Box闭合标签
        echo '<div class="second-box">'; // Second Box开标签
        $isSecondBox = true;
    }

    // 输出当前元素内容,保留原有前缀的写法
    echo ($isSecondBox ? "Second Box" : "First Box") . $val . "<br>";

    // 到每组第4个元素时,关闭Second Box,有后续元素则新开下一组的First Box
    if ($count % 4 == 0) {
        echo '</div>'; // Second Box闭合标签
        $isSecondBox = false;
        // 不是最后一个元素的话新开下一组
        if ($count != $total) {
            echo '<div class="first-box">';
        }
    }
}

// 处理最后一组不足4个元素的收尾,闭合未关的标签
if ($isSecondBox) {
    echo '</div>';
} elseif ($count %4 != 0) {
    echo '</div>';
}

如果不需要嵌套Box结构,只是要在第3、第4个元素后加对应闭合标签,直接在$count %4 ==3和$count%4 ==0的判断里输出对应标签即可,不用处理开标签逻辑。


内容的提问来源于stack exchange,提问作者Ajendra Panwar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:09:04