微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在foreach中处理codeigniter php array_merge的最佳方法是什么?

如何解决在foreach中处理codeigniter php array_merge的最佳方法是什么?

我正在尝试列出来自school_location_id = 1的学校的所有学生,我使用codeigniter的 USE 连接到多个学校数据库。我的挑战是仅列出最后一所学校的学生。 下面是我的代码

$schools = $this -> db->select('*')
    ->from('schools')
    ->where('schools.school_location_id',1)
    ->get()->result_array();
foreach ($schools as $row) :
    $school_db_name = $row['school_db_name'];
    $this->db->query("use $school_db_name");  // here I switch school database,cause I'm connected to multiple school databasees
    $school_students = $this->db->select('*')
        ->from('school_students')
        ->get()->result_array();
endforeach;

$recipients = array_merge($school_students);

foreach ($recipients as $row) :
    echo $row['name'];
endforeach;

解决方法

$school_students对于foreach循环的每一遍都将被覆盖。一种选择是简单地将结果添加到数组中,如下所示:

    foreach($schools as $row):
            $school_db_name    =   $row['school_db_name'];
            $this->db->query("use $school_db_name");
            $school_students[]    =   $this->db->select('*')
                                    ->from('school_students')
                                    ->get()->result_array();
    endforeach;

如果之后需要展平阵列,则可以使用以下示例:

$recipients = array_merge(...$school_students)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。