如何将 php 中的输出分组?

how can i group the ouput in php?

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

公司DB:

+------------+-----------+
| id_company | name      |
+------------+-----------+
| 1          | Microsoft |
+------------+-----------+
| 2          | Apple     |
+------------+-----------+
| 3          | IBM       |
+------------+-----------+

产品DB

+-------------+----------------+---------------+---------------+
| 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。 示例:

$date = '%2020-10%';
$query = $mysqli -> prepare('SELECT * FROM products as p JOIN company as c on c.id_company = p.id_pro_company and p.control_dates LIKE ?');
$query -> bind_param('s',$date);
$query -> execute();
$result = $query -> get_result();
if($result -> num_rows > 0){
   //how group for company then for products then output the record?
}else{
    echo 'Nothing to do';
}

正如您在代码中的评论中看到的,我不明白如何将公司与内部产品分组。

示例输出:

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

使用 mysl 你总是会得到一个平面数组(所以数据会重复)所以我的想法是在同一个数组上做嵌套的 foreach:第一个输出供应商,第二个输出供应商的 if将呼应产品类型,第三个将呼应产品。但是这样效率很低。

我会选择三个不同的查询:查找供应商、查找产品类型和查找产品。

第三种方法是操纵数组,将其拆分为每个供应商的不同数组,但与恕我直言的多个查询相比,这种方法效率较低