加载中…
正文 字体大小:

PHP环境下动态生成表格

(2008-07-30 12:04:13)
标签:

php

html

htm

表格

it

分类: IT技术

PHP环境下动态生成表格

 

提要: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>\n";
    for($k=0;$k<$cols;$k++) {
        $tab_str.="<td>单元格</td>\n";
    }
    $tab_str.=</tr>\n";
}

上述代码结构清晰,是两个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\">\n";

for($i=0;$i<$rows;$i++){
    $tab_str.="<tr>\n";
    for($k=0;$k<$cols;$k++){
        $j=$i*$cols+$k; //单元格序列
        $tab_str.="<td width=\"$td_width\">$j</td>\n";
    }
    $tab_str.="</tr>\n";
}

$tab_str.="</table>\n";

print $tab_str;

?>

阅读 评论 收藏 转载 喜欢 打印举报
已投稿到:
  • 评论加载中,请稍候...
发评论

       

    验证码: 请点击后输入验证码 收听验证码

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有