如何将 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将呼应产品类型,第三个将呼应产品。但是这样效率很低。
我会选择三个不同的查询:查找供应商、查找产品类型和查找产品。
第三种方法是操纵数组,将其拆分为每个供应商的不同数组,但与恕我直言的多个查询相比,这种方法效率较低
我正在尝试创建一个时间表。通过选择日期,我将不得不按公司显示当时到期的所有产品,让我们以这两个数据库为例:
公司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将呼应产品类型,第三个将呼应产品。但是这样效率很低。
我会选择三个不同的查询:查找供应商、查找产品类型和查找产品。
第三种方法是操纵数组,将其拆分为每个供应商的不同数组,但与恕我直言的多个查询相比,这种方法效率较低