CodeIgniter中如何从查询返回的二维数组提取id值赋值给变量?
问题根因
你调用result_array()方法返回的是查询结果集合的二维数组结构,哪怕查询仅返回1条结果,也会在外层包裹一层索引为0的数组,你输出的print_r结果也能看出结构:外层是索引数组,第一个元素才是存id的关联数组,所以直接用$get_src['id']无法读取到对应值。
解决方案
方案1:直接按现有结构取值
如果你的查询逻辑确定只会返回1条结果,直接读取第一层索引0下的id字段即可,修改数组赋值代码:
// 原写法 'fsource'=> $get_src // 改为 'fsource'=> $get_src[0]['id']
稳妥起见可以加非空判断,避免查询无结果时报数组索引不存在错误:
$source_id = isset($get_src[0]['id']) ? $get_src[0]['id'] : 0; // 0可替换为你业务中的默认无效值 $post = array('fstatus'=> $status,'fsource'=> $source_id);
方案2:简化查询返回结构,直接获取单条数据
如果你的查询本来就是取单条匹配结果,可以直接把result_array()替换为CodeIgniter提供的row_array()方法,该方法会直接返回第一条结果的一维关联数组,不需要再额外取索引0:
// 修改模型调用行的返回方法 $content['getsource'] = $this->leads_model->get_selected_source($source)->row_array(); $get_src = $content['getsource']; // 此时就可以直接读取id字段 $post = array('fstatus'=> $status,'fsource'=> $get_src['id']);
内容的提问来源于stack exchange,提问作者H2O
相关产品推荐
相关产品推荐

