首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP分组数组

PHP分组数组
EN

Stack Overflow用户
提问于 2011-05-10 06:16:50
回答 3查看 2.4K关注 0票数 1

我有以下数组:

代码语言:javascript
运行
复制
$comments   = array();
$comments[] = array('member_id' => '17',
                    'time'      => '2011-05-10 11:10:00',
                    'name'      => 'John Smith',
                    'comment'   => 'Test Comment 1');
$comments[] = array('member_id' => '25',
                    'time'      => '2011-05-10 11:26:00',
                    'name'      => 'David Jones',
                    'comment'   => 'Test Comment 2');
$comments[] = array('member_id' => '17',
                    'time'      => '2011-05-10 13:15:00',
                    'name'      => 'John Smith',
                    'comment'   => 'Test Comment 3');

我将如何按照member_id进行分组?因此,我将能够以以下格式在页面上显示注释:

约翰·史密斯(2篇评论)

  • 2011-05-10 11:10:00测试意见1
  • 2011年-05-10 13:15

戴维·琼斯(评论1)

  • 2011-05-10 11:26:00
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-10 06:22:22

一种解决方案是按name字段对它们进行排序(请查看乌斯托中的名称),但更容易的方法可能是以这种方式填充一个新数组:

代码语言:javascript
运行
复制
$grouped = array();
foreach($comments as $c) {
  if(!isset($grouped[$c['name']]) {
    $grouped[$c['name']] = array();
  }

  $grouped[$c['name']][] = $c;
}

//Now it's just a matter of a double foreach to print them out:
foreach($grouped as $name => $group) {
  //print header here
  echo $name, "<br>\n";

  foreach($group as $c) {
    //print each comment here
  }
}
票数 4
EN

Stack Overflow用户

发布于 2011-05-10 06:24:05

我建议使用第二个分组数组

代码语言:javascript
运行
复制
$groups[] = array();
foreach( $comment as $k=>$v ) {
    $groups[$v['member_id']][] = $k
}

然后打印出来

代码语言:javascript
运行
复制
foreach( $group as $m_id=>$arr ) {
    echo "Group $m_id<br/>\n";
    foreach( $arr as $k ) {
        echo $comment[$k]."<br/>\n";
    }
}
票数 2
EN

Stack Overflow用户

发布于 2011-05-10 06:29:36

你应该尝试采取多维数组。

代码语言:javascript
运行
复制
 $comment_groups[] = array();
    $m_id = '';

    foreach( $comment_groups as $key=>$val ) {
         if($key == 'member_id'){
             $m_id = $val;
            }
           $comment_groups[$m_id]][] = $val;
   }

然后,您可以打印您想要显示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5945968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档