+ -
当前位置:首页 → 问答吧 → 哪位帮忙解决下,遍历数组,合并相同的值,保留不同的值

哪位帮忙解决下,遍历数组,合并相同的值,保留不同的值

时间:2011-09-20

来源:互联网


mysql 查询出来一组数据 
比如 :
id | name | age | sex | addtime
1 | aaa | 1 | 10 | 2011-09-20
1 | aaa | 1 | 10 | 2011-09-21
1 | bbb | 1 | 18 | 2011-08-22
1 | ccc | 2 | 10 | 2011-09-10

我现在要让 相同的aaa 重复的 内容合并,然后 addtime
中 有几个时间值 我就遍历出一个时间,接在后面,以此类推,没有的填NULL。

打印出来 我想 是
id | name | age | sex | addtime1 | addtime2 
1 | aaa | 1 | 10 | 2011-09-20 | 2011-9-21
2 | bbb | 1 | 18 | 2011-08-22 | null
3 | ccc | 2 | 10 | 2011-09-10 | null

作者: Anrai   发布时间: 2011-09-20

select group_concat(addtime) as addtime from table group by name
然后php处理下。

作者: foolbirdflyfirst   发布时间: 2011-09-20

PHP code

//郁闷得蛋痛,花点时间写了。。

$arr = array(
    array('name'=>'aaa', 't1'=>'20110916'),
    array('name'=>'aaa', 't1'=>'20110911'),
    array('name'=>'bbb', 't1'=>'20110116'),
    array('name'=>'ccc', 't1'=>'20110512'),
);

$rs = array();
foreach($arr as $row) {
    if(isset($rs[$row['name']])) {
        $rs[$row['name']] = array_merge($rs[$row['name']], array('t2'=>$row['t1']));
    }
    else {
        $rs[$row['name']] = array_merge($row, array('t2'=>null));
    }
}

echo '<pre>';
var_dump($rs);

//输出结果:
array
  'aaa' => 
    array
      'name' => string 'aaa' (length=3)
      't1' => string '20110916' (length=8)
      't2' => string '20110911' (length=8)
  'bbb' => 
    array
      'name' => string 'bbb' (length=3)
      't1' => string '20110116' (length=8)
      't2' => null
  'ccc' => 
    array
      'name' => string 'ccc' (length=3)
      't1' => string '20110512' (length=8)
      't2' => null

作者: yangball   发布时间: 2011-09-20

我的是php版本,非mysql

作者: yangball   发布时间: 2011-09-20

谢谢, 明白了, 希望蛋疼哥蛋多疼一点, 多写出一些好东西。

作者: Anrai   发布时间: 2011-09-20

引用 4 楼 anrai 的回复:

谢谢, 明白了, 希望蛋疼哥蛋多疼一点, 多写出一些好东西。

XX

作者: yangball   发布时间: 2011-09-20

相关阅读 更多