php - 嵌套 WHILE 循环的问题

标签 php mysql

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

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);
}

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

GROUP 1 - 1 
GROUP 2 - 1 1 
GROUP 3 - 1 1 1

因此,出于某种原因,嵌套循环继续运行超过它应该运行的时间。谁能帮忙?

最佳答案

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

// ...
while( (true == ($groups = mysql_fetch_assoc($allGroups))) && ($i < 3) ) {
    $mKeys = array();
    $gid = $groups['ThisID'];
    // ...

关于php - 嵌套 WHILE 循环的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4851696/

相关文章:

PHP&MYSQL - 向数据库插入数据失败

MySQL - 删除选择

MySQL 在更新期间将我的 JSON 对象解释为字符串

php - 插入最多仅添加 1000 条记录并忽略此后的所有记录

mysql - SQL 查询排除具有特定值的一对多?

php - 表格没有垂直对齐

php - 如何删除并显示密码字段中的单词 "password"

php - PHP ':' 语句末尾的 'if' 是什么意思?

Mysql 选择日期和可能的情况

php - 运行特定模式 :update | doctrine doesn't recognize table chages symfony2