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

CodeIgniter中如何提取指定数组内的ID值1、10、3、13?

问题:CodeIgniter中如何正确提取数组ID并批量更新数据?

我来帮你解决这个问题~首先理清楚你的数据结构和问题所在:

你提供的数组结构是这样的:

array(1) { 
    [0] => array(2) { 
        ["list_length"] => string(2) "10" 
        ["id"] => array(4) { 
            [0] => string(1) "1" 
            [1] => string(2) "10" 
            [2] => string(1) "3" 
            [3] => string(2) "13" 
        } 
    } 
}

你的需求是拿到["id"]对应的那组值(1、10、3、13),然后用这些值作为条件,把trainee表中对应no字段的记录的recieve字段更新为1。但你当前的代码有两个关键问题:没有正确提取目标ID数组,也用错了数据库条件方法。

先看你尝试的代码:

public function recieve($data){ 
    //var_dump($data); 
    $ids = $data; 
    var_dump($ids); 
    $this->db->set('recieve', '1'); 
    $this->db->where('no', $ids); 
    $this->db->update('trainee')` 
}

正确的实现代码:

public function recieve($data){ 
    // 第一步:精准提取ID数组
    $ids = $data[0]['id'];
    
    // 第二步:用where_in批量匹配ID
    $this->db->set('recieve', '1');
    // where_in会生成WHERE no IN (1,10,3,13)的SQL,适合多值匹配
    $this->db->where_in('no', $ids);
    $this->db->update('trainee');
}

为什么这样改?

  • 精准提取ID数组:你的$data是一个外层数组,目标ID数组藏在$data[0]['id']里面,直接把整个$data赋值给$ids肯定拿不到正确的ID列表,必须精准定位到嵌套的id字段。
  • 用where_in替代where:where方法只能处理单个值的匹配,而你要匹配多个no值,where_in才是CodeIgniter中专门用来处理“字段值在数组范围内”的方法,它会自动生成符合SQL规范的IN语句。
  • 语法修正:你原来的代码最后多了一个多余的反引号,要去掉才能保证代码正常运行。

内容的提问来源于stack exchange,提问作者John Uy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:02:33