我有一个名为产品的数据库表,这是相关的部分:
id, company_id, product_name, product_version
产品可以有重复的名称,但 ID 和版本不同。这是一个示例(虚构的东西)条目:
1, 24, Kool, default version
2, 24, Kool, mega edition
3, 24, Kool, pink edition
4, 24, Kool, limited edition
5, 24, Something, default version
6, 24, Something, v2
7, 24, Anotherone, default version
8, 24, Last, default version
9, 24, Last, special edition
10, 56, Bloop, default version
11, 56, Bloop, second edition
为了获取这些数据,我有以下 php:
$result = mysqli_query($link, "
SELECT p.*
, c.company_name
FROM products p
JOIN company c
ON p.company_id = c.id
ORDER
BY c.company_name
, p.id
, p.product_name");
然后我使用以下方式显示它:
$group1 = array();
while ($row1 = mysqli_fetch_assoc($result)) {
$group1[ $row1['company_name'] ][] = $row1;
}
foreach ($group1 as $company_name => $models) {
echo "$company_name\n";
echo "</br>";
foreach ($models as $model) {
echo '<div id="product">';
echo "<a href='index.php?id=$model[id]'>";
echo "<img src='$product_image_url'>"; // this variable is set earlier.
echo '</a>';
echo "<p>$model_name</p>"; // this variable is set earlier.
echo '</div>';
}
echo '<div id="clear"></div>'; // clear float: left before next company.
}
显示如下:
COMPANY 1
PRODUCT 1, PRODUCT 2, PRODUCT 3
COMPANY 2
PRODUCT 1, PRODUCT 2
但我希望每个产品线(每个公司旗下)只能是共享相同product_name 的产品。
例如,对于公司 ID '24'(下面称为 COMPANY 1)下的所有产品,我希望对任何具有 Product_name = Kool 的项目进行分组,然后数组再次开始处理下一个项目....像这样:
COMPANY 1
Kool, Kool, Kool, Kool
Something, Something
Anotherone
Last, Last
COMPANY 2
Bloop, Bloop
Lunto
Wolli, Wolli
COMPANY 3
and so on...
我一整天都在摆弄代码,但无法弄清楚。我的大脑将不胜感激任何关于该做什么的帮助。
编辑回复Shutterfly:
该代码给了我这个输出:
COMPANY 1
Kool, Kool, Kool, Kool
COMPANY 1
Something, Something
COMPANY 1
Anotherone
COMPANY 1
Last, Last
COMPANY 2
and so on...
我只希望一家公司生产该公司的所有产品。但是由于您的代码,产品的显示方式非常漂亮!该部分有效。
我可以更改什么以使其只有一个公司标题?
最佳答案
这是怎么回事?
while ($row1 = mysqli_fetch_assoc($resource)) {
$result[ $row1['company_name'] ][ $row1['product_name'] ][] = $row1;
}
foreach ($result as $company_name => $products_group) {
echo $company_name;
foreach ($products_group as $group_name => $products) {
foreach ($products as $product) {
// do something...
}
echo "<br />";
}
echo "<br /><br />";
}
关于php - 如何选择并显示按相同产品名称排序的数组中的产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24720739/