Php 从数据库表打印格式化多维数组

Php 从数据库表打印格式化多维数组,php,mysql,arrays,Php,Mysql,Arrays,我有一个数据库表,它有两个字段,subject_id和teacher_id。subject_id字段中有代表数学、科学、英语等科目的数字。教师id字段代表各种教师。他们同时出现在同一行上意味着教师1教科目2,或者在不同的行上,教师1教科目5,或者在不同的行上,教师4教科目2,等等。。。这是一种多对多的关系 从数据库查询后,我得到一个如下结构的数组: Array ( [0] => Array ( [first_name] => bob [subj

我有一个数据库表,它有两个字段,subject_id和teacher_id。subject_id字段中有代表数学、科学、英语等科目的数字。教师id字段代表各种教师。他们同时出现在同一行上意味着教师1教科目2,或者在不同的行上,教师1教科目5,或者在不同的行上,教师4教科目2,等等。。。这是一种多对多的关系

从数据库查询后,我得到一个如下结构的数组:

Array
(
[0] => Array
    (
        [first_name] => bob
        [subject_en_name] => italian
    )

[1] => Array
    (
        [first_name] => bob
        [subject_en_name] => japanese
    )

[2] => Array
    (
        [first_name] => bob
        [subject_en_name] => korean
    )

[3] => Array
    (
        [first_name] => sally
        [subject_en_name] => math
    )

[4] => Array
    (
        [first_name] => sally
        [subject_en_name] => GMAT
    )
)

我需要筛选出第一个名字,然后打印出一个句子,如:

Bob teaches italian, japanese, korean...
Sally teaches math, GMAT...
使用foreach结构

foreach ($teacher_object as $t_object)
{
    echo $t_object['first_name'] . " teaches " . $t_object['subject_en_name'] . "<br>";

}

有没有一个php函数可以帮我排序数组?其他解决方案?

首先重新排列数组,这样您就有了一个新数组,其中教师姓名作为索引,班级作为子数组:

$teaches = array();
foreach ($teacher_object as $t_object) {
    $teaches[$t_object['first_name']][] = $t_object['subject_en_name'];
}
新阵列将如下所示:

Array
(
    [bob] => Array
        (
            [0] => italian
            [1] => japanese
            [2] => korean
        )

    [sally] => Array
        (
            [0] => math
            [1] => GMAT
        )

)
foreach($teaches AS $teacher => $classes) {
    echo $teacher . " teaches " . implode(", ",$classes) . "<br/>";
}
现在有了一个更容易循环的数组。大概是这样的:

Array
(
    [bob] => Array
        (
            [0] => italian
            [1] => japanese
            [2] => korean
        )

    [sally] => Array
        (
            [0] => math
            [1] => GMAT
        )

)
foreach($teaches AS $teacher => $classes) {
    echo $teacher . " teaches " . implode(", ",$classes) . "<br/>";
}

首先重新排列数组,以便创建一个新数组,其中教师姓名作为索引,班级作为子数组:

$teaches = array();
foreach ($teacher_object as $t_object) {
    $teaches[$t_object['first_name']][] = $t_object['subject_en_name'];
}
新阵列将如下所示:

Array
(
    [bob] => Array
        (
            [0] => italian
            [1] => japanese
            [2] => korean
        )

    [sally] => Array
        (
            [0] => math
            [1] => GMAT
        )

)
foreach($teaches AS $teacher => $classes) {
    echo $teacher . " teaches " . implode(", ",$classes) . "<br/>";
}
现在有了一个更容易循环的数组。大概是这样的:

Array
(
    [bob] => Array
        (
            [0] => italian
            [1] => japanese
            [2] => korean
        )

    [sally] => Array
        (
            [0] => math
            [1] => GMAT
        )

)
foreach($teaches AS $teacher => $classes) {
    echo $teacher . " teaches " . implode(", ",$classes) . "<br/>";
}