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

PHP循环实现数据库内容左右交替布局时出现重复问题求助

问题原因

你代码的核心问题是:在if/else分支逻辑结束后,又重复写了一套左侧布局的代码。这意味着每遍历一条数据库数据时,会先根据$i的值渲染一次左/右布局,紧接着又强制渲染一次左侧布局,自然就出现了同一信息重复显示的情况。

修复方案

删掉if/else块之后的那套重复代码,改用$i的奇偶性来控制左右交替布局,确保每条数据只被渲染一次。

修改后的完整代码:

<?php 
// 假设这里有遍历数据库数据的循环,比如 foreach($data as $i => $D) {
?>
    <?php if ($i % 2 === 0) { // 偶数索引显示左布局 ?>
        <tr>
          <td align="center" width="100%" style="background-color:#eceded">
            <a style="text-decoration:none" href="<?php echo $D->LINK ?>" target="_blank">
              <img src="<?php echo $D->IMAGEM ?>" alt="" style="width: 207px;border-radius: 15px 0px 0px 15px;float: left;margin-left: 71px;">
              <div style="background-color: #ffffff;width: 50%;color: #6a6a6a;border-radius: 0px 15px 15px 0px;margin-left: 219px;height: 209px;">
                <p style="font-family:Arial;font-size:20px;line-height:130%;color:#6a6a6a;text-align:center;padding-top: 0.5em;">
                  <strong><?php echo $D->TITULO ?></strong>
                </p>
                <p style="text-align: left; padding: 0px 35px 0px 35px;"><?php echo $D->DESCRICAO ?></p>
                <img src="https://unifeso.edu.br/email-news/images/btn_news.png" alt="" style="width: 190px; margin-top: 0px; margin-left: 7px;">
              </div>
            </a>
          </td>
        </tr>
        <tr>
          <td style="height:40px;background-color:#eceded">&nbsp;</td>
        </tr>
    <?php } else { // 奇数索引显示右布局 ?>
        <tr>
          <td align="center" width="100%" style="background-color:#eceded">
            <a style="text-decoration:none" href="<?php echo $D->LINK ?>" target="_blank">
              <img src="<?php echo $D->IMAGEM ?>" alt="" style="width: 207px;border-radius: 0px 15px 15px 0px;float: right;margin-right: 73px;">
              <div style="background-color: #ffffff;width: 50%;color: #6a6a6a;border-radius: 15px 0px 0px 15px;margin-right: 222px;height: 209px;">
                <p style="font-family:Arial;font-size:20px;line-height:130%;color:#6a6a6a;text-align:center;padding-top: 0.5em;">
                  <strong><?php echo $D->TITULO ?></strong>
                </p>
                <p style="text-align: right; padding: 0px 35px 0px 35px;"><?php echo $D->DESCRICAO ?></p>
                <img src="https://unifeso.edu.br/email-news/images/btn_news.png" alt="" style="width: 190px; margin-top: -30px; margin-left: 7px;">
              </div>
            </a>
          </td>
        </tr>
        <tr>
          <td style="height:40px;background-color:#eceded">&nbsp;</td>
        </tr>
    <?php } ?>
<?php 
// } 循环结束
?>
关键说明
  1. 用$i % 2 === 0判断索引奇偶性,实现第一条左、第二条右、第三条左的交替效果,比只判断$i === 0更通用,能支持多条数据的循环。
  2. 彻底删除了if/else块之后的重复布局代码,确保每条数据只渲染一次对应布局。
  3. 修复了原代码中margin-top: px的语法错误,改成margin-top: 0px避免样式异常。

内容的提问来源于stack exchange,提问作者André Alves

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:10:34