Php 如何选择和显示按相同产品名称排序的阵列中的产品

Php 如何选择和显示按相同产品名称排序的阵列中的产品,php,mysql,Php,Mysql,我有一个名为products的数据库表,下面是相关部分: 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

我有一个名为products的数据库表,下面是相关部分:

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.
    }
但我希望每家公司的每一条产品线都是具有相同产品名称的产品

例如,对于公司id“24”即下面的公司1下的所有产品,我希望对product_name=Kool的任何项目进行分组,然后为下一个项目再次启动数组……如下所示:

COMPANY 1
PRODUCT 1, PRODUCT 2, PRODUCT 3

COMPANY 2
PRODUCT 1, PRODUCT 2
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 />";
}

非常感谢您的回复,这几乎正是我想让它达到的目的。。。请看我原帖底部的编辑:我想你误解了我。请看我的更改示例。我确实误解了,它工作得很好。我需要阅读有关多个foreach循环等的内容。非常感谢您的帮助!你们有相同id但不同名称的产品吗!?!?不,相反。产品可以有相同的名称,但不同的产品版本,但它们都有一个唯一的id。因此,按id排序然后按名称排序对您没有多大帮助-哈哈,真的!感谢您指出: