(转载)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>\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;
?>

(转载)PHP 动态生成表格的更多相关文章

  1. 【转】ASP.NET中服务器控件Table动态生成表格及其属性介绍

    下文所有内容转自开源中国:http://www.oschina.net/question/565065_86453#tags_nav ================================= ...

  2. JavaScript中动态生成表格

    动态生成表格,首先需要输入并获取动态的数字,html中结构代码如下:行:<input type="text" id="row" value="5 ...

  3. js动态生成表格

    动态生成表格           *创建一个页面:两个输入框和一个按钮 *代码和步骤                      /*                          1.得到输入的行 ...

  4. JS动态生成表格后 合并单元格

    JS动态生成表格后 合并单元格 最近做项目碰到表格中的单元格合并的问题,需求是这样的,首先发ajax请求 请求回来后的数据 动态生成表格数据,但是生成后如果编号或者(根据其他的内容)有相同时,要合并单 ...

  5. 动态生成表格呈现还是将表格直接绑定gridview等控件呈现的开发方式选择依据

    动态生成表格呈现还是将表格直接绑定gridview等控件呈现的开发方式选择依据:由存储过程决定,如果编写的存储过程可以生成需要呈现的表格则直接绑定,否则要动态生成表格

  6. vue+element创建动态的form表单.以及动态生成表格的行和列

    动态创建form表单,网上有插件 (form-create) 不过我不知道它怎么用,没有使用成功,如果你使用成功了,欢迎下方留言. 最后我使用了笨方法,针对各个表单写好通用的组件,然后根据type用v ...

  7. 编辑表格输入内容、根据input输入框输入数字动态生成表格行数、编辑表格内容提交传给后台数据处理

    编辑表格输入内容.根据input输入框输入数字动态生成表格行数.编辑表格内容提交传给后台数据处理 记录自己学习做的东西,写的小demo,希望对大家也有帮助! 代码如下: <!DOCTYPE ht ...

  8. JavaScript基础7——动态生成表格

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. javascript生成表格增删改查 JavaScript动态改变表格单元格内容 动态生成表格 JS获取表格任意单元格 javascript如何动态删除表格某一行

    jsp页面表格布局Html代码 <body onload="show()"> <center> <input type="text" ...

随机推荐

  1. 10.18 noip模拟试题

    分火腿 (hdogs.pas/.c/.cpp) 时间限制:1s:内存限制 64MB 题目描述: 小月言要过四岁生日了,她的妈妈为她准备了n根火腿,她想将这些火腿均分给m位小朋友,所以她可能需要切火腿. ...

  2. WisDom.Net 框架设计(一) 总体框架

    WisDom.Net总体框架 1.目标 WisDom.Net  做为以后快速开发相关的软件的基础框架,实现用户,权限,角色,菜单,和工作流的管理功能.相关功能可以独立使用,快速用于其他程序的开发.预计 ...

  3. 关键词:CodeSmith工具、Money类型、__UNKNOWN__

    问题描述: 当数据库列类型有Money类型的时候,CodeSmith生成数据访问层会出错.有不能识别的类型.解决方法: 通过查找资料得知,数据库中的Money类型在DbType中是Currency(货 ...

  4. app包中的fragment和v4包中的fragment的使用的区别

    app包中的fragment和v4包中的fragment的使用的区别 1.尽量不要用app包中的fragment,因为这个是在3.0之后才有的,支持的版本太高,在低版本中是是用不了的 2.androi ...

  5. asp.net mvc 通过修改路由规则来实现页面的URL多参数传递

    [原文]http://blog.csdn.net/risingsun001/article/details/9068187 修改MVC3中的路由规则 在Global.asax.cs中,修改路由规则 原 ...

  6. How to Make LastPass Even More Secure with Google Authenticator

    Google Authenticator LastPass supports Google Authenticator, which is officially available as an app ...

  7. xargs rm -rf 与 -exec rm

    # find ./ -exec rm {} \; # find ./ | xargs rm -rf 两者都可以把find命令查找到的结果删除,其区别简单的说是前者是把find发现的结果一次性传给exe ...

  8. 段落排版--行间距, 行高(line-height)

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  9. window下配置SSH连接GitHub、GitHub配置ssh key(转)

    转自:http://jingyan.baidu.com/article/a65957f4e91ccf24e77f9b11.html 此经验分两部分: 第一部分介绍:在windows下通过msysGit ...

  10. HTML5-黑客帝国2D

    <!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>& ...