规则:用数组1中的id匹配数组2中的uid
 如果数组2中的uid和数组1中的id相同的话
 那就让数组2中的信息显示在数组1中id相同的下面(独立的一个数组内)
 数组1每个子数组下面都要显示4条数组2的信息
 id和uid相同的优先显示
 id和uid相同大于4条的话就只显示4条
 小于4条时用其余的补全
 求大神们解答
 数组1
$arr1 = array(
'0'=>array('id'=>1,'times'=>'2014-02-25','counts'=>'19'),
'1'=>array('id'=>2,'times'=>'2014-02-26','counts'=>'17'),
'2'=>array('id'=>3,'times'=>'2014-02-27','counts'=>'6')
);数组2
$arr2 = array(
'0'=>array('uid'=>1,'times'=>'2014-02-25','counts'=>'19'),
'1'=>array('uid'=>1,'times'=>'2014-02-26','counts'=>'17'),
'2'=>array('uid'=>1,'times'=>'2014-02-27','counts'=>'16'),
'3'=>array('uid'=>3,'times'=>'2014-02-28','counts'=>'18'),
'4'=>array('uid'=>1,'times'=>'2014-02-28','counts'=>'15'),
'5'=>array('uid'=>4,'times'=>'2014-02-28','counts'=>'14'),
'6'=>array('uid'=>4,'times'=>'2014-02-28','counts'=>'13'),
'7'=>array('uid'=>1,'times'=>'2014-02-28','counts'=>'12'),
'8'=>array('uid'=>1,'times'=>'2014-02-28','counts'=>'11'),
'9'=>array('uid'=>3,'times'=>'2014-02-28','counts'=>'10')
最后生成一个这样的数组
Array
(
    [0] => Array
        (
            [arr1] => Array
                (
                   '0'=>array('id'=>1,'times'=>'2014-02-25','counts'=>'19'),
                )            [arr2] => Array
                (
                 '0'=>array('uid'=>1,'times'=>'2014-02-25','counts'=>'19'),
     '1'=>array('uid'=>1,'times'=>'2014-02-26','counts'=>'17'),
     '2'=>array('uid'=>1,'times'=>'2014-02-27','counts'=>'16'),
                )        )
   [1] => Array
        (
            [arr1] => Array
                (
                   '0'=>array('id'=>2,'times'=>'2014-02-26','counts'=>'17'),
                )            [arr2] => Array
                (
                  '0'=>array('uid'=>1,'times'=>'2014-02-28','counts'=>'15'),
'1'=>array('uid'=>1,'times'=>'2014-02-28','counts'=>'12'),
'2'=>array('uid'=>1,'times'=>'2014-02-28','counts'=>'11'),                )        )
  [2] => Array
        (
            [arr1] => Array
                (
                   '0'=>array('id'=>3,'times'=>'2014-02-27','counts'=>'6')
                )            [arr2] => Array
                (
                  '0'=>array('uid'=>3,'times'=>'2014-02-28','counts'=>'18'),
'1'=>array('uid'=>3,'times'=>'2014-02-28','counts'=>'10'),
'5'=>array('uid'=>4,'times'=>'2014-02-28','counts'=>'14'),                )        )
)

解决方案 »

  1.   

    foreach($arr1 as $v) $arr[$v['id']]['arr1'][] = $v;
    foreach($arr2 as $v) $arr[$v['uid']]['arr2'][] = $v;
    print_r($arr);
    Array
    (
        [1] => Array
            (
                [arr1] => Array
                    (
                        [0] => Array
                            (
                                [id] => 1
                                [times] => 2014-02-25
                                [counts] => 19
                            )                )            [arr2] => Array
                    (
                        [0] => Array
                            (
                                [uid] => 1
                                [times] => 2014-02-25
                                [counts] => 19
                            )                    [1] => Array
                            (
                                [uid] => 1
                                [times] => 2014-02-26
                                [counts] => 17
                            )                    [2] => Array
                            (
                                [uid] => 1
                                [times] => 2014-02-27
                                [counts] => 16
                            )                    [3] => Array
                            (
                                [uid] => 1
                                [times] => 2014-02-28
                                [counts] => 15
                            )                    [4] => Array
                            (
                                [uid] => 1
                                [times] => 2014-02-28
                                [counts] => 12
                            )                    [5] => Array
                            (
                                [uid] => 1
                                [times] => 2014-02-28
                                [counts] => 11
                            )                )        )    [2] => Array
            (
                [arr1] => Array
                    (
                        [0] => Array
                            (
                                [id] => 2
                                [times] => 2014-02-26
                                [counts] => 17
                            )                )        )    [3] => Array
            (
                [arr1] => Array
                    (
                        [0] => Array
                            (
                                [id] => 3
                                [times] => 2014-02-27
                                [counts] => 6
                            )                )            [arr2] => Array
                    (
                        [0] => Array
                            (
                                [uid] => 3
                                [times] => 2014-02-28
                                [counts] => 18
                            )                    [1] => Array
                            (
                                [uid] => 3
                                [times] => 2014-02-28
                                [counts] => 10
                            )                )        )    [4] => Array
            (
                [arr2] => Array
                    (
                        [0] => Array
                            (
                                [uid] => 4
                                [times] => 2014-02-28
                                [counts] => 14
                            )                    [1] => Array
                            (
                                [uid] => 4
                                [times] => 2014-02-28
                                [counts] => 13
                            )                )        ))
      

  2.   

    大神我就是做到了这一步,但是每个arr1下面只可以放3个相同的,相同的要是大于3个的话就让他们补充id相同小于3的,要是没有相同的id的话就用别的补充3个 这个需求应该怎么解决呢?
      

  3.   

    一楼的大神我就是做到了这一步,但是每个arr1下面只可以放3个相同的,相同的要是大于3个的话就让他们补充id相同小于3的,要是没有相同的id的话就用别的补充3个 这个需求应该怎么解决呢?
      

  4.   

    foreach($arr1 as $v) $arr[$v['id']]['arr1'][] = $v;
    foreach($arr2 as $v) $arr[$v['uid']]['arr2'][] = $v;foreach($arr as &$v) {
      if(isset($v['arr2'])) {
        if(count($v['arr2']) > 3) $v['arr2'] = array_slice($v['arr2'], 0, 3);
        else while(count($v['arr2']) < 3) $v['arr2'][] = end($arr2);
      }
    }
    print_r($arr);
    Array
    (
        [1] => Array
            (
                [arr1] => Array
                    (
                        [0] => Array
                            (
                                [id] => 1
                                [times] => 2014-02-25
                                [counts] => 19
                            )                )            [arr2] => Array
                    (
                        [0] => Array
                            (
                                [uid] => 1
                                [times] => 2014-02-25
                                [counts] => 19
                            )                    [1] => Array
                            (
                                [uid] => 1
                                [times] => 2014-02-26
                                [counts] => 17
                            )                    [2] => Array
                            (
                                [uid] => 1
                                [times] => 2014-02-27
                                [counts] => 16
                            )                )        )    [2] => Array
            (
                [arr1] => Array
                    (
                        [0] => Array
                            (
                                [id] => 2
                                [times] => 2014-02-26
                                [counts] => 17
                            )                )        )    [3] => Array
            (
                [arr1] => Array
                    (
                        [0] => Array
                            (
                                [id] => 3
                                [times] => 2014-02-27
                                [counts] => 6
                            )                )            [arr2] => Array
                    (
                        [0] => Array
                            (
                                [uid] => 3
                                [times] => 2014-02-28
                                [counts] => 18
                            )                    [1] => Array
                            (
                                [uid] => 3
                                [times] => 2014-02-28
                                [counts] => 10
                            )                    [2] => Array
                            (
                                [uid] => 3
                                [times] => 2014-02-28
                                [counts] => 10
                            )                )        )    [4] => Array
            (
                [arr2] => Array
                    (
                        [0] => Array
                            (
                                [uid] => 4
                                [times] => 2014-02-28
                                [counts] => 14
                            )                    [1] => Array
                            (
                                [uid] => 4
                                [times] => 2014-02-28
                                [counts] => 13
                            )                    [2] => Array
                            (
                                [uid] => 3
                                [times] => 2014-02-28
                                [counts] => 10
                            )                )        ))你有一个不存在下级节点的节点,打算如何处理?
      

  5.   

     就是要把最后多余的平均放到不存在的id下面 arr2下面的数组不能有重复的 id3下面的arr2好像最后一个重复了 id3下面的arr2本身有2条记录应该给他追加一个多余的记录进去 组成三条 那个不存在下级节点的节点的应该把没有匹配完的记录 追加到不存在的下面 应该是这样的 最主要就是这里了 大神帮帮忙