Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codeigniter 通过循环传递数组时出错_Codeigniter_Foreach - Fatal编程技术网

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
}