Php 数组每行输入两次

Php 数组每行输入两次,php,arrays,codeigniter,loops,Php,Arrays,Codeigniter,Loops,我有一个模型,它有一个查询学生注册的科目的功能 public function getAllSubjects($username){ $this->db->select('student.username, subjects.subject_name, teacher.firstname as TeachersFirstName, teacher.surname as TeacherSurname'); $this->db->from('users stu

我有一个模型,它有一个查询学生注册的科目的功能

public function getAllSubjects($username){
    $this->db->select('student.username, subjects.subject_name, teacher.firstname as TeachersFirstName, teacher.surname as TeacherSurname');
    $this->db->from('users student');
    $this->db->join('student_subjects', 'student.username = student_subjects.student_username', 'inner');
    $this->db->join('subjects', 'student_subjects.subject_id = subjects.subject_id', 'inner');
    $this->db->join('users teacher', 'subjects.teacher_username = teacher.username', 'inner');
    $this->db->where('student.username', $username);
    $studentSubjQuery = $this->db->get('users');
    return $studentSubjQuery->result_array();
}
在控制器中,我从模型调用函数,将返回的数组存储到数据中,并将其传递给视图。现在,当我尝试打印数组时,行在一个数组中存储了两次。以下是打印阵列:

    Array
(
    [0] => Array
        (
            [username] => dirkjan021
            [subject_name] => Chemistry
            [TeachersFirstName] => Teacher 1
            [TeacherSurname] => Teacher 1 Surname
        )

    [1] => Array
        (
            [username] => dirkjan021
            [subject_name] => Chemistry
            [TeachersFirstName] => Teacher 1
            [TeacherSurname] => Teacher 1 Surname
        )

    [2] => Array
        (
            [username] => dirkjan021
            [subject_name] => Physics
            [TeachersFirstName] => Teacher 1
            [TeacherSurname] => Teacher 1 Surname
        )

    [3] => Array
        (
            [username] => dirkjan021
            [subject_name] => Physics
            [TeachersFirstName] => Teacher 1
            [TeacherSurname] => Teacher 1 Surname
        )

)
以下是控制器代码:

public function acads()
{
    if (!$this->session->userdata('username')) {
        // Redirect to homepage
        redirect('../');
    } else {
        // Allow Access to User's Acads
        $data['userInfo'] = $this->session->all_userdata();
        // Query User Subjects
        $this->load->model('usersubject_model');
        $data['userSubjects'] = $this->usersubject_model->getAllSubjects($this->session->userdata('username'));
        $this->load->view('view_userAcads', $data);
    }
}
更新: 以下是根据“$this->output->profiler(TRUE)”进行的查询:


我现在明白了。模型查询最初是从('users'student,'users')中“查询两次”,因为我有以下两行:
$this->db->from('users'student)
$this->db->get('users')


我所做的是从数据库中删除数据库->并编辑
db->get
db->get('users'student')

Put
$this->output->启用\u分析器(TRUE)并重新加载页面。那么你能把查询复制粘贴到问题中吗?你试过按条件添加一个组吗?@RossWilson我猜是从from行开始的。它有“用户”和“学生用户”。@Filo你是怎么做到的?那么它将如何解决这个问题呢?@RossWilson因为可能的罪魁祸首可能是FROM行中调用的两个表,所以我如何才能自动加入我的表。最初,我使用FROM(users student)将其与教师区分开来。如何使用Codeigniter将$query=分配给FROM('users'student')。
SELECT `student`.`username`, `subjects`.`subject_name`, `teacher`.`firstname` as TeachersFirstName, `teacher`.`surname` as TeacherSurname
FROM (`users` student, `users`)
INNER JOIN `student_subjects` ON `student`.`username` = `student_subjects`.`student_username`
INNER JOIN `subjects` ON `student_subjects`.`subject_id` = `subjects`.`subject_id`
INNER JOIN `users` teacher ON `subjects`.`teacher_username` = `teacher`.`username`
WHERE `student`.`username` =  'dirkjan021'