Codeigniter 通过循环传递数组时出错
这是我的控制器功能Codeigniter 通过循环传递数组时出错,codeigniter,foreach,Codeigniter,Foreach,这是我的控制器功能 public function update_monthly() { $data = $this->student_model->get_due_info(); foreach ($data as $value) { $due = $this->student_model->get_due_by_id($value); $grade = $this->student
public function update_monthly() {
$data = $this->student_model->get_due_info();
foreach ($data as $value) {
$due = $this->student_model->get_due_by_id($value);
$grade = $this->student_model->get_grade_by_id($value);
$grade_due = $this->student_model->get_due_by_grade($grade);
$new_due = $due + $grade_due;
$this->db->set('md_due',$new_due, FALSE);
}
}
我得到以下错误
A PHP Error was encountered
Severity: Notice
Message: Array to string conversion
Filename: database/DB_active_rec.php
Line Number: 427
及
型号代码
public function get_due_by_id($id) {
$this->db->select('md_due');
$this->db->from('monthly_due');
$this->db->where('md_student_id', $id);
$query = $this->db->get();
return $query->result_array();
}
public function get_due_by_grade($id) {
$this->db->select('dt_fee');
$this->db->from('due_table');
$this->db->where('dt_grade', $id);
$query = $this->db->get();
return $query->result_array();
}
public function get_grade_by_id($id) {
$this->db->select('grade');
$this->db->from('student_info');
$this->db->where('student_gen_id', $id);
$query = $this->db->get();
return $query->result_array();
}
public function get_due_info() {
$this->db->select('md_student_id');
$this->db->from('monthly_due');
$query = $this->db->get();
return $query->result_array();
}
您将整个数组传递给您的模型,而不仅仅是您想要的值
$due = $this->student_model->get_due_by_id($value);
正确的做法是通过考试
$value['md_student_id']
这是您实际要传递的值
用这个替换你的代码
foreach ($data as $value) {
$due = $this->student_model->get_due_by_id($value['md_student_id'] );
$grade = $this->student_model->get_grade_by_id($value['md_student_id']);
$grade_due = $this->student_model->get_due_by_grade($grade[0]['grade']);
$new_due = $due + $grade_due;
$this->db->set('md_due',$new_due, FALSE);
}
将
$value['md\u student\u id']
传递给模型,而不是控制器中的$value
$data = $this->student_model->get_due_info();
foreach ($data as $value) {
$due = $this->student_model->get_due_by_id($value['md_student_id'] );
$grade = $this->student_model->get_grade_by_id($value['md_student_id']);
$grade_due = $this->student_model->get_due_by_grade($grade[0]['grade']);
//Add remaining logic
}
由于CI活动记录返回关联数组,请更改
$due=$this->student\u model->get\u due\u by\u id($value)
to$due=this->student_model->get_due_by_id($value[ARRAY_INDEX | COLUMN NAME])代码>可以在这里粘贴模型代码吗?这是因为您需要将id传递给“按id获取到期日”模型函数。如果您返回数组对象,则使用“按id获取到期日”($value['id\u col\u name')),或者如果您返回stdClass对象,则使用“按id获取到期日”($value->id\u col name)如果有任何疑问,请随时通知我。$due=$this->student_model->get_due_by_id($value['md_student_id');根据@mudasser-Ali,我尝试了这个解决方案,但没有成功。在你给你的模型打电话确认你的id不正确之前,只需回显$value[0]['md\u student\u id']array@HossamAldeenAhmed:你为什么认为$value[0]['md\u student\u id']
only??如果您打印从模式返回的数组,它将看起来像数组(0=>array(id=>you\u id)),只需打印$value并给出实际返回的值即可
$data = $this->student_model->get_due_info();
foreach ($data as $value) {
$due = $this->student_model->get_due_by_id($value['md_student_id'] );
$grade = $this->student_model->get_grade_by_id($value['md_student_id']);
$grade_due = $this->student_model->get_due_by_grade($grade[0]['grade']);
//Add remaining logic
}