2

I have a list product after query by mysql

product_id | product_name | group_id | group_name
    1            ABC              1            A
    2            DEF              1            A
    3            GHI              1            A
    4            JKL              2            B  

My code

<table>
   <thead>
      <tr>
          <th>Group</th>
          <th>Product Name</th>
      </tr>
   </thead>
   <tbody>
   <?php foreach ($products as $product) : ?>
      <tr>
         <td><?php echo $product->group_name ?></td>
         <td><?php echo $product->product_name ?></td>    
      </tr>
   <?php endforeach; ?>
   </tbody>
</table>

Result

Group  | Product Name
A           ABC
A           DEF   
A           GHI
B           JKL

How to change it to show this result

A
---
ABC
DEF
GHI

B
---
JKL
Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
Hai Truong IT
  • 4,126
  • 13
  • 55
  • 102

1 Answers1

1

Reindex your products by group name:

$productsByGroup = array();

foreach($products as $product) {
    if(!isset($productsByGroup[$product->group_name])) {
        $productsByGroup[$product->group_name] = array();
    }

    $productsByGroup[$product->group_name][] = $product;
}

foreach($productsByGroup as $group_name => $products) {
    print $group_name;
    print "<br>---<br>";
    foreach($products as $product) {
        print $product . "<br>";
    }
}
FuzzyTree
  • 32,014
  • 3
  • 54
  • 85