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

如何在CodeIgniter控制器中从逗号分隔员工ID读取员工姓名

解决CodeIgniter控制器中DataTables仅显示单个员工姓名的问题

问题出在你内层循环中每次都会覆盖$name变量,导致最终只保留最后一个用户的名字。修改方法如下:

修改后的控制器代码

public function user_access_list(){
    $draw = intval($this->input->get("draw"));
    $start = intval($this->input->get("start"));
    $length = intval($this->input->get("length"));

    $fetch = $this->Erp_model->get_user_access_settings();
    $data = array();

    foreach($fetch->result() as $r) {
        $users = explode(',',$r->user_id);
        $user_names = []; // 初始化空数组存储用户姓名
        
        foreach($users as $user) {
            $read = $this->Erp_model->read_user_info($user);
            // 将每个用户的姓名添加到数组中
            $user_names[] = $read[0]->first_name.' '.$read[0]->last_name;
        }

        // 用逗号加空格拼接所有姓名
        $full_names = implode(', ', $user_names);

        $data[] = array(
            // 注意:原代码中的$combhr变量未定义,若为多余项可删除,或补充对应逻辑
            $r->module_id,
            $full_names
        );
    }

    $output = array(
        "draw" => $draw,
        "recordsTotal" => $fetch->num_rows(),
        "recordsFiltered" => $fetch->num_rows(),
        "data" => $data
    );
    echo json_encode($output);
    exit();
}

关键修改点

  • 初始化$user_names空数组,用来收集当前模块下所有用户的姓名
  • 内层循环不再直接覆盖变量,而是把每个用户姓名追加到数组中
  • 使用implode(', ', $user_names)将数组转换为逗号分隔的字符串,匹配你期望的显示格式
  • 原代码中的$combhr变量未定义,需根据实际情况删除或补充逻辑,否则会运行报错

内容的提问来源于stack exchange,提问作者Jahangir Hossain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:32:34