2016-05-20 9 views
0

私はグループとアイテムを含む配列を持つPHPアプリケーションで次のHTML部分を持っています。最初にグループで並べ替えると、グループ内にコンマ(Item1、Item2、Item3)で区切られた項目があり、カンマをつけません。ループ内で順序付けされていないリストをネストする必要がありますか?

<dl> 
    <?php $groupname = '' ?> 
    <?php foreach ($product['product_filters'] as $product_filter) { ?> 
     <?php if ($groupname != $product_filter['group']) { ?> 
      <?php $groupname = $product_filter['group']; ?> 
      <?php echo '<dd>' . $product_filter['group'] . '</dd>'; ?> 
     <?php } ?> 
     <dt> 
      <?php echo $product_filter['name']; ?> 
     </dt> 
    <?php } ?> 
</dl> 

は、私は次のような結果を持つようにしたいが、私はそれを管理する方法がわからないと、どのループ私が使用する必要があります。

Group 1 
    G1_Item_1, G1_Item_2 
Group 2 
    G2_Item_1, G2_Item_2, G2_Item_3 
+0

データの表示方法は?あなたはfnc implode( "、"、$ array);によって分離された項目を得ることができます。 – daremachine

答えて

1

は、次の2つのループを使用することができます:1を再構築するためにあなたのデータをグループに分け、1つは目的の形式で出力します。反対の意味で<dt><dd>を使用したことに注意してください。グループはタイトルなので、<dt>を使用してください。

また、すべての行でphpタグを開いたり閉じたりしないと、コードがはるかに読みやすくなります。このような中断のないコードブロックを作成してみてください。これにより、読みやすくなります。

<?php 
// Create a new structure ($groups): one entry per group, keyed by group name 
// with as value the array of names: 
foreach ($product['product_filters'] as $product_filter) { 
    $groups[$product_filter['group']][] = $product_filter['name']; 
} 
// Sort it by group name (the key) 
ksort($groups); 
// Print the new structure, using implode to comma-separate the names 
foreach ($groups as $group => $names) { 
    echo "<dt>$group</dt><dd>" . implode(', ', $names) . "</dd>"; 
} 
?> 

それはeval.in上で実行を参照してください:ここで

が示唆コードです。

関連する問題