而Loop For Table PHP

时间:2015-09-10 05:00:33

标签: php while-loop html-table

我正在尝试在while循环PHP中执行此操作,分配数量是无限制的,因此rowspan也应该根据行数调整自己,有没有适当的方法用最少的行数来做?

<table border="1" cellpadding="5" cellspacing="0">
 <thead>
   <tr>
     <th>Assignment No</th>
     <th>Student Name</th>
     <th>Assignment Marks</th>
     <th>Overall Result</th>
   </tr> 
  </thead>
  <tbody>
    <tr>
      <td align="center">1</td>
      <td align="center">S1</td>
      <td align="center">5</td>
      <td rowspan="3" align="center">B Grade</td>
    </tr>
    <tr>
      <td align="center">2</td>
      <td align="center">S1</td>
      <td align="center">8</td>
    </tr>
    <tr>
      <td align="center">3</td>
      <td align="center">S1</td>
      <td align="center">7</td>
    </tr>
  </tbody>
</table>

3 个答案:

答案 0 :(得分:0)

试试这个:

    <? foreach($dataarray as $data)
    {?>
    <tbody>
        <tr>
          <td align="center"><? echo $data[0]; ?></td>
          <td align="center"><? echo $data[1]; ?></td>
          <td align="center"><? echo $data[2]; ?></td>
          </tr>
    <? if($data[3]!=Null) { ?>
    <td rowspan="3" align="center"><? echo $data[3]; ?></td>
    <? } ?>
    <? } ?>

并将if条件放在最后一列

答案 1 :(得分:0)

假设数据以线性方式(即简单的一维数组),并且等级不在数组中,我会做这样的事情:

<? 
   $sizeofArray = count($data);
   $rowspan = floor($sizeofArray/3);

   for($arrCnt = 0; $arrCnt < $sizeofArray; $arrCnt +=3)
{?>
<tbody>
    <tr>
      <td align="center"><?=$data[$arrCnt]; ?></td>
      <td align="center"><?=(($arrCnt+1 < $sizeofArray)?$data[$arrCnt+1]:"&nbsp;"); ?></td>
      <td align="center"><?=(($arrCnt+2 < $sizeofArray)?$data[$arrCnt+2]:"&nbsp;"); ?></td>
      </tr>
<? if($data[3]!=Null) { ?>
<td rowspan="<?=$rowspan?>" align="center"><?=$grade; ?></td>
<? } ?>
<? } ?>

编辑:添加&#34;填充&#34;代码,以避免索引超出范围错误

答案 2 :(得分:0)

根据您的情况,rowspan因学生而异。您想要做的是由学生分组数据。每个学生的作业数量将为您提供行数值。

While ... {
  $data['student'][] =  ['name' => $row -> name]; // all student inf
  $data['student][]['assignments'][] = ['id' => $row -> assignement_id];//student assigments

}

希望这有帮助或正确指出解决问题的方法。 使用foreach循环

foreach ($data as $student){

  $rowspan = count($student['assignments'];
  foreach ($student['assigments'] as $assignment ){
         // html table 
  }
}