zoukankan      html  css  js  c++  java
  • (转载)PHP 动态生成表格

    (转载)http://hi.baidu.com/shawns/item/c7d51f351c6a0482b711dba6

    提要:PHP能够高效地生成HTML代码,其中,动态生成表格是实际应用中经常碰到的事情。本文依据本站在网页中生成表格的经验,粗略介绍实用而简单的PHP动态生成表格的方法。

    表格的HTML代码中,<tr>...</tr>实际代表着表格的“行”,而介于<tr>...< /tr>之间的代码标签<td>...</td>等同于表格的“列”。为此,在PHP环境下,我们要生成一张表格实际上就 是处理<tr>和<td>标签:在什么时候书写<tr>标签、写多少个,以及,在什么地方书写<td> 标签、写多少个。

    显然,表格的“行”与“列”应该是已知条件,如若不是,也应该从其他已知条件中得到赋值。这里,为了方便演示和说明,我们假设表格的行和列是已知的,即,行为$rows,列为$cols。

    行是写<tr>标签的依据,而列是写<td>标签的依据,我们用两个for语句就能方便地写<tr>和<td>标签,<td>代码的for语句嵌套在<tr>代码的for语句之内:

    for($i=0;$i<$rows;$i++) 
    {
    $tab_str.="<tr>
    ";
    for($k=0;$k<$cols;$k++) 
    {
        $tab_str.="<td>单元格</td>
    ";
    }
    $tab_str.=</tr>
    ";
    }

    上述代码结构清晰,是两个for语句相互嵌套,它们恰到好处地将<tr>和<td>标签以标准的HTML方式写出来。代码中,\n是分行符(请注意使用时符号“\”要改为小角),使用它只是为了方便用户阅读PHP生成的HTML代码。

    我们还有一些实际问题需要解决:单元格的宽度、单元格的内容。

    假设我们平均分布各列宽度,那么,100/cols即为各列的宽度百分比值,可记作 $td_width=100/$cols."%"。由于 100/$cols 可能出现浮点数值(即有小数点的数),我们有必要简单处理一下,可用函数floor()取出最大整数(当然也有其他的方法),那么,计算单元格的宽度算式应该为:$td_width=floor(100/$cols)."%"。

    单元格的内容将动态取得,比如从一个数组中取值,那么,单元格的索引值将是获得数组各元素值的关键(或依据)。作为演示,这里我们只给出单元格的索引值。 在上述两个for语句嵌套的代码里,我们需要一个算式取得各单元格的序号,它是在写<td>标签过程中获得,显然地,如果仅使用其中的变 量$k是不行的,因为它将在小于$cols之内从0开始循环;但是,我们仍然有办法:$i、$k和$cols是有关系的三个变量,我们从中得到单元格索引 (即序列)的值的算式为:$j=$i*$cols+$k。有了这个值,我们从另外的数组中提取数组元素值就变得很轻松了。

    下面是完整的程序代码:

    <?php
    $rows = 10; //
    $cols = 8; //
    
    $td_width = floor(100 / $cols)."%";
    $tab_str = "<table border="1" width="80%" align="center">
    ";
    
    for ($i = 0; $i < $rows; $i++)
    {
        $tab_str.="<tr>
    ";
        for ($k = 0; $k < $cols; $k++)
        {
            $j = $i * $cols + $k; //单元格序列
            $tab_str.= "<td width="$td_width">$j</td>
    ";
        }
        $tab_str.="</tr>
    ";
    }
    $tab_str.="</table>
    ";
    
    print $tab_str;
    ?>
  • 相关阅读:
    POJ 1330 Nearest Common Ancestors(LCA Tarjan算法)
    LCA 最近公共祖先 (模板)
    线段树,最大值查询位置
    带权并查集
    转负二进制
    UVA 11437 Triangle Fun
    UVA 11488 Hyper Prefix Sets (字典树)
    UVALive 3295 Counting Triangles
    POJ 2752 Seek the Name, Seek the Fame (KMP)
    UVA 11584 Partitioning by Palindromes (字符串区间dp)
  • 原文地址:https://www.cnblogs.com/Robotke1/p/3152167.html
Copyright © 2011-2022 走看看