php - SQL 连接两个表以给出多数组结果

标签 php mysql arrays join mysqli

我有 2 个表事件类别categories 表有 2 列 idcategoryevent 表包含 category_id 作为 categories 表的外键。

现在events表的内容由以下给出

+------------------------------------------------------+
| id | category_id | event_name | event_date | created |
+------------------------------------------------------+
| 1  |     1       | event 1    | 12-04-2016 |TIMESTAMP|
| 2  |     1       | event 2    | 14-04-2016 |TIMESTAMP|
| 3  |     2       | event 1    | 16-04-2016 |TIMESTAMP|
| 4  |     1       | event 3    | 14-04-2016 |TIMESTAMP|
| 5  |     2       | event 2    | 12-04-2016 |TIMESTAMP|
+------------------------------------------------------+

现在我想做的是选择所有行并以表单生成输出

=> Category 1
     <> event 1
     <><> 12-04-2016
     <> event 2
     <><> 14-04-2016
     <> event 3
     <><> 14-04-2016
=> Category 2
     <> event 1
     <><> 16-04-2016
     <> event 2
     <><> 12-04-2016

如何做到这一点。我正在使用 PHPmysqli 并且我想将此信息存储在 PHP 数组中,以便我可以使用 PHP for 循环在页面中的任何位置打印它或foreach

最佳答案

按类别、事件名称对查询进行排序

SELECT  categories.category,
        events.event_name

FROM categories

    LEFT JOIN events
    ON events.category_id = categories.id

ORDER BY categories.category, events.event_name

然后迭代结果来构造你想要的多维数组:

$data = array();

foreach($results as $row){
    $data[$row['category']][$row['event_name']]['event_name'] = $row['event_name'];
    $data[$row['category']][$row['event_name']]['event_date'] = $row['event_date'];
}

然后您可以执行类似这样的嵌套迭代来输出:

foreach($data as $category => $events){

    echo $category.'<br>';

    foreach($events as $event){
        echo '    <> '.$event['event_name'].'<br>';
        echo '        <> '.$event['event_date'].'<br>';
    }

}

您可以获取事件 ID 并在名称不唯一时使用它,而不是使用事件/类别名称作为多维数组的索引。

关于php - SQL 连接两个表以给出多数组结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36458593/

相关文章:

javascript - 如何从 javascript 散点图中的另一个变量添加 x 和 y 的新值?

php - 如何在 Doctrine ORM中搜索单词?

php - 在 laravel 中合并

php - <div> 之间的差距

php - 在 MySQL 中创建查找表的最快方法

c - 数组中元素的数量

php - "Wrong parameters for Exception"创建Exception子类时

php - 关于如何存储/管理数据库中条目的文件的建议

php - 如何在Excel中获取MySQL表实体

arrays - 平均阵列Powershell的一部分