使用嵌套for循环显示数据

hfyxw5xn  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(320)

我有存储在mysql数据库中的登录数据。根据这些数据,我成功地将每个月的登录信息按性别分组。例如,1月份有1400名男性用户和1500名女性用户登录。
现在我正努力在表格中显示数据。
目前,我将其设置为:

<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循环。目前,它是这样显示数据的。

euoag5mw

euoag5mw1#

我相信这对你有用。它利用 $key => $value 形式 foreach . $key 用于获取所需的女性计数值。
只有当两个数据集的记录数完全相同并且排序完全相同时,这种方法才有效。
注意:我对控制结构使用替代语法是因为这是一种习惯,而且在我看来,在跳入和跳出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>
disbfnqx

disbfnqx2#

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

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

…一些类似的东西。不过,上面的sql语句可能是您的最佳选择。。。

mrfwxfqh

mrfwxfqh3#

问题是,对于每一个男性,你都要遍历每一个女性,我建议使用某种sql查询,根据日期连接男性和女性

SELECT * from male m LEFT join female f on m.date = f.date

一些类似的东西

相关问题