CodeIgniter循环中出现Undefined offset错误,求排查解决
排查CodeIgniter中「Undefined offset: 2」的通知错误
嘿,我来帮你搞定这个问题!咱们先拆解一下报错的根源:
你这段代码里的问题出在数组元素的赋值方式上:
- 你初始化了空数组
$item_err = array(); - 当第一次循环(
$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
相关产品推荐
相关产品推荐

