如何在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
相关产品推荐
相关产品推荐

