如何使组(如果特定字段是相同的文本)循环


How to make group (if specific field are same text) in loop?

我尝试循环渲染数据,如果extend_tag字段在一个容器中具有相同的文本组。
我只知道像下面的硬代码,循环数据库基于有多少已知的extend_tag组,但实际上未知的extend_tag数字可能是tag_和任何数字,知道如何解决吗?

数据

[tag] => Array (
  [0] => Array ( 
    [id] => 1 
    [extend_tag] => tag_0 
  ) 
  [1] => Array ( 
    [id] => 2 
    [extend_tag] => tag_11 
  ) 
  [2] => Array ( 
    [id] => 3 
    [extend_tag] => tag_4 
  ) 
)

  <ul class="container">
  <?php foreach($rows['tag'] as $eachRowsTag) { ?>
    <?php if ($eachRowsTag['extend_tag'] == 'tag_0') { ?>
    <li>><?php echo $eachRowsTag['id']; ?></li>
    <?php } ?>
  <?php } ?>
  </ul>
  <ul class="container">
  <?php foreach($rows['tag'] as $eachRowsTag) { ?>
    <?php if ($eachRowsTag['extend_tag'] == 'tag_1') { ?>
    <li>><?php echo $eachRowsTag['id']; ?></li>
    <?php } ?>
  <?php } ?>
  </ul>
  ...

为什么不先将它们分组,然后迭代生成的数组。如下所示。

foreach ($tags as $tag) {
  $grouped[$tag['extend_tag']][] = $tag;
}
// Now $grouped is something along the lines of:
// [
//   'tag_0' => [
//     [ 'id' => 1, 'extend_tag' => 'tag_0'],
//     ..
//   ],
//   ..
// ]
foreach($grouped as $extend_tag => $tags) {
  echo "All tags in $extended_tag.";
  foreach($tags as $tag) {
    echo $tag['id'];
  }
}
// For something like:
// All tags in tag_0.
// 1
// 4
// All tags in tag_1.
// ..