• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

写了个函数

发布: 2007-7-01 15:06 | 作者: admin | 来源: | 查看: 12次 | 进入软件测试论坛讨论

领测软件测试网 <?php
/**
* 函数 data_box
* 功能 根据模板输出数据源中的内容
* 参数
* $fun 回调函数,必须提供。作用是从数据源中读取数据。要求返回的最好是关联数组
* $source 数据源,必须提供。可以是数组或查询结果
* $template 模板,可以没有。未提供模板时用标准表格输出数据
* 模板格式:
* array(top=>"",block=>"",fool=>"")
* 其中:
* top 开始部分
* block 可重复部分,变量为关联数组的键,形如$IN_varname。其中前导的IN_可省略
* fool 结束部分
*/
function data_box($_fun,$_source,$_template="") {
$_ar = $_fun(&$_source);
if($_template == "") {
while(list($k,) = each($_ar)) {
$th .= "<th>$k</th>";
$td .= "<td>\$IN_$k</td>";
}
$_template = array(top=>"<table border><tr>$th</tr>",block=>"<tr>$td</tr>",fool=>"</table>");
}else if(! preg_match("/\$IN_\w+/",$_template[block]))
$_template[block] = preg_replace("/[\$](\w*)/U","\$IN_\\1",$_template[block]);

$buf = eval("return \"$_template[top]\";");
do {
extract($_ar, EXTR_PREFIX_ALL, "IN");
$buf .= eval("return \"$_template[block]\";");
}while($_ar = $_fun(&$_source));
$buf .= eval("return \"$_template[fool]\";");
return $buf;
}

function get_data($source) {
if(list($k,$v) = each($source))
return $v;
return false;
}

$arr = array(
array(a=>1,b=>2,c=>3,11,12,31),
array(a=>11,b=>12,c=>13,11,12,131)
);

echo data_box("get_data",$arr);
echo data_box("get_data",$arr,array(top=>"列表测试<select>",block=>@#<option value=$a>$b@#,fool=>"</select><br>"));

$tpl = array(top=>"月历测试<table><tr bgcolor=@##000000@# style=@#color:#cfcfcf@#><th>日</th><th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th>六</th></tr>",block=>@#<tr><td>$0</td><td>$1</td><td>$2</td><td>$3</td><td>$4</td><td>$5</td><td>$6</td></tr>@#,fool=>"</table>");

$a = array_merge(array_fill(0,$w=date("w",mktime(0,0,0,date("m"),1,date("Y")))," "),range(1,$d=date("t")),array_fill(0,(7-($w+$d)%7)%7," "));
for($i=0;$i<count($a);$i+=7)
$ar[] = array_slice($a,$i,$i+7);

echo ereg_replace("<td>(".date("d")."</td>)","<td bgcolor=@##000000@# style=@#color:#ffffff@#>\\1",data_box("get_data",$ar,$tpl));

$tpl = array(top=>"分页导航测试<br>",block=>@#共{$0}条[{$1}页] 第{$2}页 {$3} {$4} {$5} {$6}@#,fool=>"");
$record = 20;
$pagesize = 6;
$pages = ceil($record/$pagesize);
$page=2;

$ar = array(
array($record,$pages,$page,
$page>1?"首页":"",
$page>1?"上页":"",
$page<$pages?"下页":"",
$page<$pages?"尾页":""
)
);
echo data_box("get_data",$ar,$tpl);
?>

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网