如何在php中对输出进行分组?

如何在php中对输出进行分组?,php,mysqli,Php,Mysqli,我正在尝试创建一个时间表。通过选择日期,我将必须按公司显示在该时刻过期的所有产品,以这两个数据库为例: 公司DB: +------------+-----------+ | id_company | name | +------------+-----------+ | 1 | Microsoft | +------------+-----------+ | 2 | Apple | +------------+-----------+ | 3

我正在尝试创建一个时间表。通过选择日期,我将必须按公司显示在该时刻过期的所有产品,以这两个数据库为例:

公司
DB

+------------+-----------+
| id_company | name      |
+------------+-----------+
| 1          | Microsoft |
+------------+-----------+
| 2          | Apple     |
+------------+-----------+
| 3          | IBM       |
+------------+-----------+
+-------------+----------------+---------------+---------------+
| id_products | id_pro_company | name_products | control_dates |
+-------------+----------------+---------------+---------------+
| 1           | 1              | pc            | 2020-10-02    |
+-------------+----------------+---------------+---------------+
| 2           | 2              | tablet        | 2020-10-10    |
+-------------+----------------+---------------+---------------+
| 3           | 3              | phone         | 2030-10-10    |
+-------------+----------------+---------------+---------------+
产品
DB

+------------+-----------+
| id_company | name      |
+------------+-----------+
| 1          | Microsoft |
+------------+-----------+
| 2          | Apple     |
+------------+-----------+
| 3          | IBM       |
+------------+-----------+
+-------------+----------------+---------------+---------------+
| id_products | id_pro_company | name_products | control_dates |
+-------------+----------------+---------------+---------------+
| 1           | 1              | pc            | 2020-10-02    |
+-------------+----------------+---------------+---------------+
| 2           | 2              | tablet        | 2020-10-10    |
+-------------+----------------+---------------+---------------+
| 3           | 3              | phone         | 2030-10-10    |
+-------------+----------------+---------------+---------------+
查询:

SELECT * FROM products as p JOIN company as c on c.id_company = p.id_pro_company and p.control_dates LIKE ?
现在我有了所有需要的记录,但是如何在php中对输出进行分组呢。 例如:

正如您在代码中的注释中所看到的,我不明白如何将内部有产品的公司分组

示例输出:

 1. Microsoft
    - PC
      * 1 - pc - 2020-10-02
 
 2. Apple
    -tablet
      * 2 - tablet - 2020-10-10

使用mysl,您将始终获得一个平面数组(因此数据将被重复),因此可以在同一个数组上进行嵌套foreach:第一个数组将输出供应商,第二个带有if的数组将回显产品类型,第三个数组将回显产品。但这是非常不够的

我会进行三种不同的查询:查找供应商、查找产品类型和查找产品


第三种方法是操纵阵列,将其拆分为每个供应商的不同阵列,但与多个查询相比效率更低IMHO

因此,创建一个查询并对其进行foreach,然后创建第二个foreach,并对每个产品进行另一个查询?是的,您循环供应商,并且在其中有对RPO产品的查询。在第二个查询中,您在where子句中传递供应商,以便只获得相关数据。请注意,在供应商查询中,您无论如何都应该加入产品表,以仅获取要显示的供应商,而不是所有供应商。我现在尝试让您知道,谢谢。完成。格拉齐;)