动态生成多维数组的HTML表头

时间:2015-08-26 05:23:31

标签: php html multidimensional-array

我的要求是使用Dynamic多维数组生成HTML表头。 例如 数组就像,

$Array = ('Sr.No.'=>'',
'Subject'=>array('Maths','Sci','History','Social Sci')
'Other Activities'=>array('Sports','Computer','Social'));

HTML标题应该有行号= 2的Sr. No.标题。主题和其他活动分别具有colspan = 4和colspan = 3。它将如下所示,

Github Link.

数组是动态的,即可能会有子标题,如Sci可以有物理和化学。

如果查看已生成的表格。第二排有Sci标题。可能还有一行将显示Sci下的两个部分,即物理和化学。我的意思是这是一个动态数组,可能有3或4级。我需要一个适用于第n级的脚本。它可能是3,4等。我希望我的问题现在很清楚。

我能够使用递归函数显示数据。但是动态生成具有colspan和rowspan的Header是我被困住的地方。

<thead>
   <tr>
     <th rowspan=2>Sr.No.<th>
     <th colspan=4>Subject</th>
     <th colspan=3>Other Activities</th>
  </tr>
  <tr>
     <th>Maths</th>
     <th>Sci</th>
     <th>History</th>
     <th>Social Sci</th>
     <th>Sports</th>
     <th>Computer</th>
     <th>Social</th>
  </tr>
</thead>

1 个答案:

答案 0 :(得分:0)

你走了:

$headers = "<thead>";
foreach ($Array as $key => $value)
{
    $headers .= "<th colspan='".max(sizeOf($Array[$key]),1)."'>".$key."</th>";
}
$headers .= "</thead>";

这是一个有效的 DEMO

编辑 - 基于评论:
上面的演示有以下代码:

$Array = array("Sr.No." => "",'Subject'=>array('Maths','Sci','History','Social Sci'),  
              'Other Activities'=>array('Sports','Computer','Social'));

$table = "<table style='border-style: solid;'><thead>";
$headers = "<tr>";
$headers2 = $headers;
foreach ($Array as $key => $value)
{
  $headers .= "<th colspan='".max(sizeOf($Array[$key]),1)."' style='border-right: 1px solid;'>".$key."</th>";
 if(is_array($Array[$key]))
 {
     foreach ($Array[$key] as $key2 => $value2)
     {
         $headers2 .= "<th style='border: 1px dotted;'>".$value2."</th>";
     }
 }
 else{$headers2 .= "<th style='border:1px dotted;'></th>";}
}
$headers .= "</tr>";
$headers2 .= "</tr>";
$table .= $headers.$headers2."</thead></table>";

echo $table;  

以下是结果:

enter image description here