php生成xls文件的实例代码。
如下:
<?php
include '../../inc/auth.php';
include '../public/Base.php';
include '../public/BoonList.php';
//以上是pdo连接数据库的代码,大家自行完成。
header('Cache-Control: no-cache, must-revalidate');
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: filename=leaveMessage.xls');
?>
<html>
<!--HTML中td元素的nowrap属性表示禁止单元格中的文字自动换行-->
<body>
<table width="100%" border="1" align="center" cellspacing="1" cellpadding="1">
<tr align="center">
<td nowrap><b>留言ID</b></td>
<td nowrap><b>userid</b></td>
<td nowrap><b>用户名</b></td>
<td nowrap><b>留言内容</b></td>
<td nowrap><b>日期</b></td>
</tr>
<?php
if (isset()($_GET['trio']) && $_GET['trio']=='trio_message') {
$sql = "select * from trio_message";
$order_list = $db->getAll($sql);
for($i=0;$i<count($order_list);$i++){
echo '<tr align="center">';
echo'<td nowrap>'.$order_list[$i]["id"].'</td>';
echo'<td nowrap>'.$order_list[$i]["userid"].'</td>';
echo'<td nowrap>'.$order_list[$i]["user_name"].'</td>';
echo'<td nowrap>'.$order_list[$i]["content"].'</td>';
echo'<td nowrap>'.$order_list[$i]["fdate"].'</td>';
echo '</tr>';
}
}
?>
</table>
</body>
</html>
1,PHP引用的特性
首先,PHP中的引用不是C的指针,可以把它想象成UNIX文件系统中对文件的链接,是变量的另外一个别名或者映射。
例如:
$b = &$a中,$b和$a都只是一个变量名称,此操作使$b和$a都映射到同一个变量内容;
$a 和 $b 在这里是完全相同的,这并不是 $a 指向了 $b 或者相反,而是 $a 和 $b 指向了同一个地方。
$b = &$c则是让$b重新映射到另外一个变量内容,与$a再无关系;
unset($a)只是断开了$a到变量内容的映射,但变量内容并没有被释放,依然可以使用$b来访问,一旦$b也unset了,那么该变量内容在没有任何映射的情况下会被释放。
2,函数中global $a的作用
在函数中,经常会见到global $a,$b这样的语句,其本质是对$_GLOBAL变量的一种引用。
sql语句:
$a = &$_GLOBAL['a'];
$b = &$_GLOBAL['b'];
而$_GLOBAL['a']和$_GLOBAL['b']则分别对应全局作用域中$a和$b变量,在函数中对$a和$b的修改会触发函数外部$a和$b的变量内容的修改。
如果在函数内部,则作如下操作:
$c = array(1,2,3);
$a = &$c;
实际上是改变了$a的映射关系,之前与$_GLOBAL['a']的映射就断开了,再也无法修改函数外部$a的内容。
此特性也同样作用在用引用传递函数参数的例子中。
注意:
在函数中unset($a)不会真正释放变量内容,可以看做只是断开了函数内部$a的映射而已。
3,函数的引用传递
引用传递的定义必须在函数定义中体现,在函数使用中,不要写成foo(&$a)的样子,否则会报"Call-time pass-by-reference过时"的警报。
如下情况,可以使用引用传递:
A. 变量,如foo($a)
B. New语句,如foo(new Action())
C. 函数的引用返回,如foo(bar()),其中bar()是函数,定义为:function &bar() {$a = 5; return $a;}
其余情况不可作为引用传递,较常见的比如表达式、常量、无引用的函数返回。
4,函数的引用返回
引用返回,需要注意使用形式,在定义时如下:
$a = 5;
return $a;
}
在使用时如下:
$ret = &bar();
即,定义和使用时都需要加&符号。
5,对象的赋值传递
注意:在PHP4和PHP5中对象资源的赋值传递是有区别的。
PHP4中:
$b = $a 同上。
foo(new Object()) / foo($a) 同上。
foo() {$a = new Object(); return $a} 同上。
PHP5中:
$b = $a 同上。
foo(new Object()) / foo($a) 同上。
foo() {$a = new Object(); return $a} 同上。
备注:
在测试时发现:
$a = new Object(); $b = $a后,如果$a->attr = 12; $b->attr = 13,最后结果为$a->attr和$b->attr都等于13,而不是想象中的各自独立。
可能是$a->attr 和$b->attr并没有做深拷贝,仍是同一块内存的不同映射。
如果是$a = new Object(); $b = &$a; 则不存在该疑惑,因为从头到尾只有一个真实对象,$a和$b都只是映射而已。
6,unset与=null
使用unset($a)与$a=null的结果是不一样的。
如果该块内存只有$a一个映射,那么unset($a)与$a=null等价,该内存的引用计数 变为0,被自动回收;
如果该块内存有$a和$b两个映射,那么unset($a)将导致$a=null且$b不变的情况,而$a=null会导 致$a=$b=null的情况。
原因分析:
某变量赋值为null,将导致该变量对应的内存块的引用计数直接置为0,被自动回收。
您可能感兴趣的文章:
php引用传值的实例详解
php引用的实例代码
php引用的实例详解
php引用(&)符号详解
有关php变量引用、函数传址以及对象引用的实例解析
php引用传值的详细介绍
通过实例理解php中传值与传引用的区别
通过实例看php地址引用的效率问题
有关php引用地址改变变量值的问题
PHP中的引用,“&”解释
1,php去除数组中空值的例子。
代码:
<?php
/**
* 去除数组中的空值
* edit: www.
*/
function filter($var)
{
if($var == '')
{
return false;
}
return true;
}
$arr = array('a','','b');
print_r(array_filter($arr, "filter"));
?>
2,PHP把逗号、空格、回车分隔的字符串转换为数组的函数
php实现的一个自定义函数,将多个搜索条件放到数组中,在实际的搜索时,可以分隔为指定的查询条件。
目前支持空格、逗号(中英文)、回车分割。
例子:
/**
* 逗号、空格、回车分隔的字符串
* transform ' hello, world !' to array('hello', 'world')
* edit: WWW.JBXUE.COM
*/
function strsToArray($strs) {
$result = array();
$array = array();
$strs = str_replace()(',', ',', $strs);
$strs = str_replace("n", ',', $strs);
$strs = str_replace("rn", ',', $strs);
$strs = str_replace(' ', ',', $strs);
$array = explode()(',', $strs);
foreach ($array as $key => $value) {
if ('' != ($value = trim($value))) {
$result[] = $value;
}
}
return $result;
}
//调用示例
$strs = 'Code is poetry! WTF!';
var_dump(strsToArray($strs));