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

CodeIgniter视图遍历多维数组报错:Undefined offset:1 求助

解决CodeIgniter视图中多维数组循环的Undefined Offset错误

我来帮你排查这个Undefined offset: 1的Notice问题,这在处理多维数组循环时是很常见的小坑,咱们从几个常见方向入手解决:

1. 先确认数组的真实结构

首先你得搞清楚模型返回的多维数组到底是什么样的,建议在视图的循环代码前加一段调试代码:

var_dump($your_array_variable); // 把这里换成你从控制器传过来的数组变量名
exit;

这样你就能看到完整的数组结构,重点看:

  • 是不是所有行的索引都是连续的(比如0、1、2...),有没有缺失索引1的情况?
  • 数组是不是真的包含多行数据?会不会模型只返回了一行,但你的循环逻辑误以为有多行?

2. 检查循环写法是否有误

最容易出错的就是手动用for循环时的边界问题,比如你可能写了这样的代码:

$count = count($your_array);
for($i=0; $i <= $count; $i++) { // 这里用了<=,会导致索引越界
    echo $your_array[$i]['column'];
}

因为数组索引从0开始,比如有2行数据,索引是0和1,count()返回2,<=2就会尝试取索引2,直接触发Undefined offset错误。

正确的写法应该是用<,或者更稳妥的用foreach自动遍历:

// 推荐写法:foreach自动遍历每一行,不用关心索引
foreach($your_array as $row) {
    // 直接用$row访问当前行的字段,比如
    echo $row['student_name'];
    echo $row['fee_amount'];
}

这种写法完全不会出现索引越界的问题,适配任何行数的数组。

3. 排查模型的查询逻辑

有时候问题出在模型层,比如你是不是用了错误的查询方法:

  • 如果用$this->db->row_array(),只会返回单行数据,是一维数组,强行按多维数组循环就会出错;
  • 正确获取多行数据应该用$this->db->result_array(),它会返回标准的多维数组,每一行都是一个一维数组。

另外也可以检查SQL查询语句,确认它确实能返回多行结果,比如在数据库客户端直接执行SQL,看看结果行数是否符合预期。

针对行号95的快速检查

你可以直接打开views/fee_register_list.php的第95行,看看代码是不是写了类似$array[1]['xxx']这种硬编码索引的内容,或者在循环里手动计算索引时出现了错误(比如索引加1的时机不对)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:00:40