使用嵌套for循环显示数据

Using nested for loop to display data

我有存储在 MySQL 数据库中的登录数据。从这些数据中,我成功地能够按性别对每个月的登录进行分组。例如,1月份有1400名男性用户和1500名女性用户登录。

现在我很难在 table 中显示数据。

目前,我是这样设置的:

<div role="tabpanel" class="tab-pane fade active in" id="tab_content1" aria-labelledby="home-tab">
  <table id="datatable-fixed-header" class="table table-striped table-bordered">
    <thead>
      <tr>
        <th>Month</th>
        <th>Male Logins</th>
        <th>Female Logins</th>
      </tr>
    </thead>
    <tbody>
      <?php
        foreach ($maleLogin as $maleLog){
          $mthDateTime = DateTime::createFromFormat('n', $maleLog->month);
          foreach ($femaleLogin as $femaleLog) {
      ?>
      <tr>
        <td><?php echo $mthDateTime->format('F').' '.$maleLog->year; ?></td>
        <td><?php echo $maleLog->count;?></td>
        <td><?php echo $femaleLog->count;?></td>
      </tr>
      <?php } }?>
    </tbody>
  </table>
</div>

问题出在我的嵌套 for 循环上。 Currently, it displays the data like so.

问题是你要遍历每个女性的每个男性,我建议使用某种 sql 查询,根据日期

加入男性和女性
SELECT * from male m LEFT join female f on m.date = f.date

类似的东西

对于存在嵌套循环的每个女性登录,您多次显示每个男性登录。也许只使用 1 个 foreach 循环并显示所有信息,即使是 0?

<?php
        foreach ($Login as $Log){
              if(maleLog)
                    do something for male login
              else
                    do something for female login
        }
?>

...类似的东西。 上面的 SQL 语句可能是您的最佳选择...

我相信这对你有用。它利用 foreach$key => $value 形式。 $key用于获取想要的女性计数值

仅当您的两个数据集确实具有完全相同的记录数并且排序完全相同时才有效。

注意:我使用 Alternative syntax for control structures 因为这是一种习惯,而且在我看来,当您跳入和跳出 PHP 处理器时更容易阅读。同样,我使用 <?= 而不是 <?php echo 因为它的输入要少得多。

<tbody>
    <?php
    foreach ($maleLogin as $key => $maleLog):
        $mthDateTime = DateTime::createFromFormat('n', $maleLog->month);
        ?>
        <tr>
            <td><?= $mthDateTime->format('F').' '.$maleLog->year; ?></td>
            <td><?= $maleLog->count; ?></td>
            <td><?= $femaleLogin[$key]->count; ?></td>
        </tr>
    <?php endforeach; ?>
</tbody>