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

PHP循环中每两个元素包裹DIV失效问题及解决方法

解决PHP循环中每两个元素包裹容器的问题(兼容奇数元素)

你现在的问题核心是循环里的容器开闭逻辑出错了——原代码在处理偶数元素时,关闭当前容器的同时又直接打开了一个新容器,这就导致后续元素被错误嵌套,加上收尾判断的小问题,才出现了多余的<div class="col-lg-12 col-md-12 col-sm-12">,进而影响Owl Carousel的正常渲染。

下面是修正后的代码,同时兼容奇数个元素的情况:

<?php
$diensten = "SELECT * FROM snm_content WHERE catid = 9 AND state = 1 ORDER BY ordering";
$dienstencon = $conn->query($diensten);
$tel = 0; // 改为从0开始计数,分组判断更直观
$dienstenslider = '';

while($diensten = $dienstencon->fetch_assoc()){
    // 处理简介文本截断逻辑
    if (strlen($diensten['introtext']) > 100){
        $shortstr = substr($diensten['introtext'], 0, 100) . '...';
    }else{
        $shortstr = $diensten['introtext'];
    }

    // 每组第一个元素(第1、3、5...个)时,打开容器
    if ($tel % 2 == 0) {
        $dienstenslider .= '<div class="col-lg-12 col-md-12 col-sm-12">';
    }

    // 添加单个服务项的HTML内容
    $dienstenslider .= '
    <div class="col-lg-6 col-md-6 col-sm-12">
        <div class="serv-item pull-left">
            <p class="ser-tit"><i class="pe-7s-notebook"></i><a href="info/'.$diensten['alias'].'.html">'.$diensten['title'].'</a></p>
            <p class="ser-cont"> '.strip_tags($shortstr).' </p>
            <a href="info/'.$diensten['alias'].'.html" class="ser-read-more">Lees meer<i class="fa fa-angle-right"></i></a>
        </div>
    </div>';

    // 每组第二个元素(第2、4、6...个)时,关闭容器
    if ($tel % 2 == 1) {
        $dienstenslider .= '</div>';
    }

    $tel++;
}

// 处理总元素数为奇数的情况:如果最后一组只有一个元素,补上闭合标签
if ($tel % 2 != 0) {
    $dienstenslider .= '</div>';
}

echo $dienstenslider;
?>

关键改动说明:

  1. 计数变量调整:把$tel从1改为0开始计数,这样$tel%2==0刚好对应每组的第一个元素,$tel%2==1对应每组的第二个元素,分组逻辑更清晰。
  2. 移除多余的容器打开逻辑:原代码在偶数元素时同时关闭并打开新容器,这会导致容器嵌套混乱,现在只在每组开头打开容器,结尾关闭,和Owl Carousel的owl-item结构完美匹配。
  3. 优化收尾判断:循环结束后检查总元素数是否为奇数,确保最后一组只有一个元素时,容器能正常闭合,不会出现标签不匹配的问题。

这样修改后,生成的HTML会严格按照每两个服务项包裹一个目标容器的规则输出,不管元素总数是奇数还是偶数,都不会出现多余嵌套,Owl Carousel就能正常工作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:39:44