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

Codeigniter中多重foreach循环分区域展示数据运行报错问题

问题原因

  • 核心错误是第一个foreach循环出现命名冲突:你的代码写为foreach ($tamu as $tamu),遍历数据源数组$tamu的同时,将循环临时变量也命名为$tamu。循环执行完成后,原有的$tamu结果集会被覆盖为最后一次循环的单条记录对象,第二个foreach尝试遍历已经不是数组/结果集的$tamu变量,就会抛出类型错误。
  • 额外问题:代码中的</div>标签没有对应开始标签,可能会导致前端页面渲染异常。

解决方法

修改第一个foreach的临时变量命名,避免覆盖原数组即可,修改后的视图代码如下:

<?php
  foreach ($tamu as $item) : 
?>
    <button type="button" class="btn btn-success"><?php echo $item->gateA ?></button>
  </div>  
<?php endforeach;?>

<?php
  foreach ($tamu as $item1) : 
?>
    <button type="button" class="btn btn-success"><?php echo $item1->gateB ?></button>
  </div>  
<?php endforeach;?>

可选优化

如果你的需求是把所有gateA的按钮放在第一分区、所有gateB的按钮放在第二分区,可只做一次遍历提前缓存内容,减少结果集遍历次数:

<?php
$gateA_content = '';
$gateB_content = '';
foreach ($tamu as $item) {
    $gateA_content .= '<button type="button" class="btn btn-success">'.$item->gateA.'</button></div>';
    $gateB_content .= '<button type="button" class="btn btn-success">'.$item->gateB.'</button></div>';
}

// 第一分区输出所有gateA按钮
echo $gateA_content;
// 第二分区输出所有gateB按钮
echo $gateB_content;
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:27:03