如何访问CodeIgniter控制器查询result_array()生成数组的行值
如何访问CodeIgniter查询result_array()返回的数组行值
嘿,这事儿很简单,我一步步给你讲清楚怎么操作:
首先,你得先把查询执行完整,拿到result_array()生成的结果集,完整代码应该是这样的:
// 执行你编写的查询,获取查询对象 $query = $this->db->select('t1.act_id, t2.login, t1.cust_name, t1.act_type, t1.act_detail, t1.date_added, t1.date_modified, t1.act_notes, t3.category, t1.total_time, sum(t1.total_time) as total') ->from('activity as t1') ->join('user as t2', 't1.user_id = t2.user_id', 'LEFT') ->join('customer as t3', 't1.cust_name = t3.cust_name', 'LEFT') ->where('t2.login', $user) ->where('MONTH(t1.date_added)', $month) ->order_by('t1.date_added', "desc") ->get(); // 将查询结果转换为关联数组格式 $results = $query->result_array();
接下来分两种常见场景访问行值:
1. 遍历所有查询结果行
如果你的查询返回了多条数据,直接用foreach循环遍历整个结果数组就行,每个循环项对应一行数据,你可以通过select语句里的字段名或别名直接访问对应值:
foreach ($results as $row) { // 访问act_id字段 echo $row['act_id']; // 访问用户登录名login echo $row['login']; // 访问你用sum计算的total别名 echo $row['total']; // 其他字段同理,比如活动详情、创建时间等 echo $row['act_detail']; echo $row['date_added']; }
2. 访问单个指定行的字段
如果你的查询只返回一行,或者你想直接定位到某一行(比如第一行),可以通过数组索引直接获取,记得先判断数组不为空避免报错:
if (!empty($results)) { // 取结果集中的第一行(数组索引从0开始) $targetRow = $results[0]; // 访问该行的客户分类字段 echo $targetRow['category']; // 访问单条记录的耗时字段 echo $targetRow['total_time']; }
小提醒
- 如果你select的字段存在重名(比如两个表都有
name字段),记得给字段加别名,比如t1.cust_name as customer_name,之后就用$row['customer_name']访问,避免字段值被覆盖。 - 所有你在select里指定的字段或自定义别名,都是数组的键名,直接用这个键名就能拿到对应的数据值~
内容的提问来源于stack exchange,提问作者Syns
相关产品推荐
相关产品推荐

