php - 从数据库表中打印格式化的多维数组

标签 php mysql arrays

我有一个包含两个字段的数据库表,subject_id 和 teacher_id。在 subject_id 字段中是代表数学、科学、英语等学科的数字。 teacher_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>";

}

我只能管理这些打印输出:

bob teaches italian
bob teaches japanese
bob teaches korean
sally teaches math
sally teaches GMAT

是否有一个 php 函数可以帮助我对数组进行排序?其他解决方案?

最佳答案

首先重新排列你的数组,这样你就有了一个以教师姓名为索引、类(class)为子数组的新数组:

$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/>";
}

给你...

bob teaches italian, japanese, korean
sally teaches math, GMAT

关于php - 从数据库表中打印格式化的多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20362321/

相关文章:

c++ - 使用指针初始化数组,然后从中读回数据。

javascript存储相似的值

php - 使用 php 显示当前页面的事件导航

php - mysql,自上次登录列表以来的时间

c - 在我的代码中的函数之间返回数组指针有问题吗?

mysql - SQL 子查询 IN SELECT [Symfony3]

java - 为什么我无法使用 Dropwizard 连接到 AWS RDS 实例?

php - 为什么 usort (php) 即使不返回整数也能工作?

javascript - 使用下拉 JavaScript 无法进入输入文本字段

mysql - 重叠预订 SQL