根据相同的值将数组元素包装在div中 [英] Wrap array elements in divs based on same value

查看:86
本文介绍了根据相同的值将数组元素包装在div中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

从mysql获取结果后,是否可以将字段id_group中具有相同值的数组元素分组并将它们包装在div元素中.谁能给我一些建议呢?

After fetching results from mysql, is it possible to group the array elements with the same values from the field id_group and wrap them in div elements. Can anyone give me soem suggestions?

这是我想要的输出:

 <div class="id_group_1"> 
   <div>comment from group 1</div>
   <div>comment from group 1</div>
   <div>comment from group 1</div>
 </div>

 <div class="id_group_2">
   <div>comment from group 2</div>
   <div>comment from group 2</div>
   <div>comment from group 2</div>
   <div>comment from group 2</div>
   <div>comment from group 2</div>
 </div>

PHP

  $id_group = $_POST["group"];
  $reply = $_POST["reply"];
  $sql = "SELECT a.comments,b.name,a.id_group from `reviews` a 
          INNER JOIN `users` b 
          ON a.app_id = b.id  
          WHERE a.post_name = ? 
          AND a.id_group IN ($in) 
          ORDER BY a.id_group";

  $users = $dbh->prepare($sql);
  $users->bindValue(1,$reply);
  $i = 3;
  foreach ($id_group as $id) {
    $users->bindValue($i++, $id);
  }
  $users->execute(array_merge(array($reply), $id_group));

  //*****Here*****//
  foreach($users as $row)
  {
    echo "<div>".$row["comments"]."<br>Written by ".$row["name"]."</div>";  
  }

推荐答案

$rows = $users->fetchAll(PDO::FETCH_ASSOC);
$arrayByGroup = array();

$id = null;
foreach ($rows as $r) {
  if($id != $r['id_group']) {
    if (!is_null($id)) {
      echo '</div>';
    }
    $id = $r['id_group'];
    echo '<div class="id_group_' . $id . '">';
  }
  echo "<div>".$r["comments"]."<br>Written by ".$r["name"]."</div>";

}
echo '</div>'

根据马特·巴雷特(Matt Barrett)的见识进行编辑.

Edit made based on Matt Barrett's insight.

这篇关于根据相同的值将数组元素包装在div中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆