首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套的WHILE循环的问题

问嵌套的WHILE循环的问题
EN

Stack Overflow用户
提问于 2011-01-31 21:59:24
回答 2查看 525关注 0票数 0

我在使用嵌套的while循环时遇到了问题。我已经创建了这个函数来列出三个组,并且在每个组中我想要另一个循环列出该组中最多四个成员:

代码语言:javascript
复制
function getBlockCode_MainBody() {
    global $oSysTemplate;
    $allGroups = db_res("SELECT g.*, g.id AS ThisID, COUNT(m.id_profile) AS members FROM bx_groups_main AS g LEFT JOIN bx_groups_fans AS m ON g.id = m.id_entry GROUP BY g.id HAVING members >= 1 ORDER BY RAND() LIMIT 3");
    $i = 0;
    while( (true == ($groups = mysql_fetch_assoc($allGroups))) && ($i < 3) ) {
       $gid = $groups['ThisID'];
       $members = db_res("SELECT * FROM bx_groups_fans WHERE id_entry = {$gid}");
       while( $member = mysql_fetch_assoc($members) ) {
          $gid = $member['id_profile'];
          $mKeys[] = array(
             'thumbnail' => $gid,
          );
       }
       $gKeys[] = array(
          'title' => $groups['title'],
          'gid'   => $groups['id'],
          'bx_repeat:members' => $mKeys,
       );
       $i++;
    }
    $aTemplateKeys = array(
      'bx_repeat:groups'  => $gKeys,
    );
    return $oSysTemplate -> parseHtmlByName('groups_main.html', $aTemplateKeys);
}

它列出了第一个循环(显示了三个组),但在每个组中嵌套的循环不起作用。我使用了成员的ID作为示例内容。如果每个组中只有一个用户,并且假设他们的成员ID为1,则输出:

代码语言:javascript
复制
GROUP 1 - 1 
GROUP 2 - 1 1 
GROUP 3 - 1 1 1

因此,由于某些原因,嵌套循环继续运行的次数超过了它应该运行的次数。有人能帮上忙吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-31 22:02:24

您应该在每次迭代时清除$mKeys数组:

代码语言:javascript
复制
// ...
while( (true == ($groups = mysql_fetch_assoc($allGroups))) && ($i < 3) ) {
    $mKeys = array();
    $gid = $groups['ThisID'];
    // ...
票数 2
EN

Stack Overflow用户

发布于 2011-01-31 22:06:38

之后

$i++;

尝试:

代码语言:javascript
复制
unset($mKeys);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4851696

复制
相关文章

相似问题

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