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

如何访问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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:48:54