foreach 三层循环问题,希望得到帮助

qeyser 发布于 2013/12/26 22:01
阅读 437
收藏 2
PHP
我有三张表:
Group 分组表 gid 为主键
User 用户表 groupid 字段 与 gid 关联
Art 文章表 uid 字段保存 User 的id

我想列出分组,分组下面列出所属用户,每个用户下面列出发布的文章。

一号组

张五 李四

这是张五发布的 这是李四发布的
这是张五发布的 这是李四发布的
----------------------------------------------------
二号组

张三 李六

这是张三发布的 这是李六发布的
这是张三发布的 这是李六发布的


我写的这个代码现在只循环了 组和用户, 但是用户的文章流不出来了,该怎么改?

$group= M('Group')->select();     foreach ($group as $k => $v) {         $group[$k]['user'] = M('User')->where(array('groupid'=>$v['gid']))->field($field)->select();         }



加载中
0
Maxint64
Maxint64
拿出了用户的话,接着就遍历用户,并查找每个用户的文章呗。
0
MrZQ
MrZQ
联合查询呀
0
帖子列表
帖子列表
为什么一看到问题的标题就知道是php啊 丢人
0
买红薯
买红薯
是ThinkPHP吧
0
码不停蹄
码不停蹄

这种循环效率很低, 应该一次性把需要的数据拿出来, 然后format输出

$user = M('user')->getUserByUid($uids);

list($group_id, $format_group) = array_get_gid_by_user($user); 

//format_group = array(gid => array(uid,uid2), gid2 => array(uid3,uid4));

$group = M('group')->getGroupByGid($group_id);

$art = M('art')->getArtByUid($uids);

//format这些数组

$format_art = format_art_by_user($user);

//$format_art = array(uid => array(art_id, art_id2)) ..

渲染

foreach($format_group as $gid => $uids)

{

    echo $group[$gid]['g_name'];

    foreach($uids as $uid)

    {

        foreach($format_art[$uid] as $art)

        {

            echo $user[$uid]['username'] , $art['title'].

        }

        

    }

}


面向流程的地方可以封装成对象来做。

0
Zeroes
Zeroes

使用组合查询

SELECT g.分组名称,u.用户名称,a.文章名称 FROM Group g,User u,Art a WHERE g.gid = u.groupid AND u.id = a.uid

---------------------------------------------------------------------------

一号组 张五 这是张五发布的
一号组 李四 这是李四发布的

二号组 张三 这是张三发布的
二号组 李六 这是李六发布的

返回顶部
顶部