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

CodeIgniter循环中出现Undefined offset错误,求排查解决

排查CodeIgniter中「Undefined offset: 2」的通知错误

嘿,我来帮你搞定这个问题!咱们先拆解一下报错的根源:

你这段代码里的问题出在数组元素的赋值方式上:

  1. 你初始化了空数组 $item_err = array();
  2. 当第一次循环($is=2)进入判断分支时,你用了 $item_err[$is] .= '...' —— 这里的.=是连接赋值运算符,它要求数组中已经存在$is这个索引的元素,才能在原有值的基础上追加内容。但此时$item_err[2]根本不存在,PHP找不到这个偏移量,所以抛出了「Undefined offset: 2」的通知。

解决方法很简单:

因为你这里是第一次给$item_err[$is]赋值,没有之前的内容需要追加,直接把连接赋值改成普通赋值就行:

$item_err = array();
for($is = 2; $is <= 10; $is ++) {
    if($order_no) {
        $check_ordr_data = $this->admin_model->checkOrderNo( array('order_no'=>trim($order_no)) );
        if (( $check_ordr_data ) > 0) {
            echo "hello";
            // 把 .= 替换成 =,直接创建索引并赋值
            $item_err[$is] = ' Order Number already exists in database ' . $order_no ;
            print_r($item_err);
            echo 'hi';
            exit;
        }
    }
}

额外说明:

如果之后你需要在同一个$is索引下追加多条错误信息,那可以先确保索引存在,再用连接赋值,比如:

// 先初始化为空字符串(如果不存在的话)
if (!isset($item_err[$is])) {
    $item_err[$is] = '';
}
// 再追加内容
$item_err[$is] .= ' 另一条错误信息 ';

这样修改后,那个通知级错误就会消失,数组也能正常生成你需要的内容啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:48:01