写了个函数

函数

<?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);
?>

时间: 2024-08-03 10:03:03

写了个函数的相关文章

用c++写了一个函数判断一个数组是否包含另一个数组 但是总是返回-1 请大神们帮忙看看错在哪里

问题描述 用c++写了一个函数判断一个数组是否包含另一个数组 但是总是返回-1 请大神们帮忙看看错在哪里 int substr_index( const char substr[], const char str[]) { int flag = -1; int sizeOfSubstr = sizeof(substr)/sizeof(char); int sizeOfStr = sizeof(str)/sizeof(char); for (int i = 0; i < sizeOfStr; i+

用java写一个main函数,打印出1-6这这六个数字的所有不同的排列

1.2.2.3.4.5这六个数字,用java写一个main函数,打印出所有不同的排列, 如:512234.412345等.要求:"4"不能在第三位,"3"与"5"不能相连. package com.test; import java.util.ArrayList; import java.util.List; /** * 1.2.2.3.4.5这六个数字,用java写一个main函数,打印出所有不同的排列, 如:512234.412345等.要求

c++-请教一下,C++ 6.0使用了SetTimer,也写了Ontimer函数

问题描述 请教一下,C++ 6.0使用了SetTimer,也写了Ontimer函数 请教一下,C++ 6.0使用了SetTimer,也写了Ontimer函数,为什么还是造成画图的代码不执行? 解决方案 用classwizard将消息和处理函数关联起来了没有?看下你的对话框的消息的定义 解决方案二: 画图的代码写在了哪里?OnTimer中触发重绘消息了吗

急急急-用c语言写三个函数分别判断年月日是否合法

问题描述 用c语言写三个函数分别判断年月日是否合法 年规定在1900-2050,月规定1-12,还要考虑是否闰年,闰年二月的天数是否正确,不正确则重新输入.本人实习生,整不出来领导要发飙了,这是一个通讯录内容的一部分,输入用户生日,1.name. 2.address. 3.birthyear. 4.birthmonth. 5.birthday 解决方案 #include<stdio.h> int isYear(int y) { return y>=1900 && y<

python学习-求用Python写个小函数:让用户在界面输入一个数字,然后返回输出这个数字加1的结果

问题描述 求用Python写个小函数:让用户在界面输入一个数字,然后返回输出这个数字加1的结果 求用Python写个函数:让用户在界面输入一个数字,然后返回输出这个数字加1的结果,小白刚学Python,求指点,谢谢! 解决方案 不好意思: return x+1 不需要,只能在函数内使用 可以像下面这么写: x = int(input("x = ")) print("Output is:",x+1) 解决方案二: 写一个函数输入4个数字然后输出每个字符之间加一个空格

jquery-Java中使用datagridview,如何在操作列上调用我自己写的function函数?

问题描述 Java中使用datagridview,如何在操作列上调用我自己写的function函数? 问题描述:datagridview中的行都是使用jquery生成的.现在跟操作列上绑定单击时间的时候总是找不到我自己写的函数,请问有什么解决办法吗? 解决方案 这种问题你得学会调试.用IE F12,看你链接的地址对不对,是不是指向你的函数调用,这是第一,一般来说是href设置为#,onclick为你的函数,然后是你的函数有没有执行,如果执行了,单步调试. 解决方案二: 写function自定义函

如何写一个主函数去调用这个函数,求指导

问题描述 如何写一个主函数去调用这个函数,求指导 bool imageSubtract(IplImage* src IplImage* dst){ int row = 0;//行 int col = 0;//列 uchar* pSrcData = NULL; uchar* pDstData = NULL; int stepSrc = 0; int stepDst = 0; if (!src || !dst){ return 0;}if ((src->height != dst->height)

VB怎么自己写一个MSGBOX函数,定时关闭自己,并且可以选择一个默认的命令?

问题描述 VB怎么自己写一个MSGBOX函数,定时关闭自己,并且可以选择一个默认的命令? VB怎么自己写一个MSGBOX函数,定时关闭自己,并且可以选择一个默认的命令? 解决方案 方法一: 自己建一个窗体,通过showmodal方式模拟弹出窗口,这个是最简单的. 方法二: moduls.pas Option Explicit Private Declare Function timeSetEvent Lib "winmm.dll" (ByVal uDelay As Long, ByVa

如何写一个主函数去调用这个,求指导

问题描述 如何写一个主函数去调用这个,求指导 bool imageSubtract(IplImage* src IplImage* dst){ int row = 0;//行 int col = 0;//列 uchar* pSrcData = NULL; uchar* pDstData = NULL; int stepSrc = 0; int stepDst = 0; if (!src || !dst){ return 0;}if ((src->height != dst->height) &

mfc入门-vs2010写mfc自己额外写的main函数怎么加进mfc中啊

问题描述 vs2010写mfc自己额外写的main函数怎么加进mfc中啊 vs2010写mfc自己额外写的main函数怎么加进mfc中啊 解决方案 MFC有自己的主函数,你把你写的函数放复制进去不就行了,或者函数调用. 解决方案二: c++输出跟mfc不一样的API.如MFC中用SetWindowText来显示字符串到控件上 解决方案三: 重定义mfc函数入口点http://blog.csdn.net/tompaz/article/details/6387611 解决方案四: 在MFC程序中增加