专注于discuz,uchome,dedecms等各类PHP程序仿站(二次开发和模板制作)。

« »

php储存(缓存文件或存入数据库)函数

这段时间因为要做discuz,phpwind,phpcms的二次开发,看不少这三个程序的代码。这三个都是比较成熟的系统了,所以看代码对自己也有不少帮助,其中在看DZX时,因为要开发一个基于DZX的人才系统,所以也看了DZx的数据库,看到数据里的很多存值,有类型和值,开始以为是json,但是后来仔细一看也不是,不过由于系统赶得急就没仔细看了。类似还有缓存文件,都想看看他们的是怎么写的,因为这 些在以后的开发中肯定是要用到的。但是后来系统完成了,可是事情也忘了。而今天在看MYSQL时,搜索问题时看了一个函数,没怎么用过就搜索了一下,发现这正是缓存和存值的关键,下面就主要介绍这两个函数了!

先要说的是var_export这个函数:

var_export

(PHP 4 >= 4.2.0, PHP 5)

var_export — 输出或返回一个变量的字符串表示

描述

mixed var_export ( mixed expression [, bool return])

此函数返回关于传递给该函数的变量的结构信息.var_dump()类似,不同的是其返回的表示是合法的 PHP 代码。

说明

当第二个参数为真时,函数只有返回值,不会输出。但是此函数不能返回数据流或是引用型变量,如文件,

 

再看看代码:

$a = array(‘a’=>array(1,2,3), ‘b’=>array(4,5,6));
$A = var_export($a, true);

echo $A;

输出:

‘array ( \’a\’ => array ( 0 => 1, 1 => 2, 2 => 3, ), \’b\’ => array ( 0 => 4, 1 => 5, 2 => 6, ), )’

但是如果存入文件会是什么样?

file_put_contents("test.txt","<?php\n\$a=".var_export($a, true).";\n?>");

文件内容:

<?php
$a=array (
  ‘a’ =>
  array (
    0 => 1,
    1 => 2,
    2 => 3,
  ),
  ‘b’ =>
  array (
    0 => 4,
    1 => 5,
    2 => 6,
  ),
);
?>

其实我在进行缓存时还会用到另外两个函数serialize(序列化)和unserialize(反序列化):

serialize

(PHP 4, PHP 5)

serialize — 产生一个可存储的值的表示

描述

string serialize (mixed $value )

代码:

$a = array(‘a’=>array(1,2,3), ‘b’=>array(4,5,6));

$str=serialize($a);
echo $str:

输出:

a:2:{s:1:"a";a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}s:1:"b";a:3:{i:0;i:4;i:1;i:5;i:2;i:6;}}

反序列化:

echo unserialize($str);

输出:

Array ( [a] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [b] => Array ( [0] => 4 [1] => 5 [2] => 6 ) )

这两个函数都可以缓存数据,但是要注意的是,var_export储存时能直接引用并使用,而serialize的则要再用unserialize反序列化。另外值得注意的var_export的效率大概是serialize或unserialize的一倍左右,但是少于两个这种,所以如果要储存加输出就用var_export,只是储存就可以用serialize,不过最主要的还是看储存的内容,个人喜欢原汁原味的,所以用var_export。

如果要把数据储存到数据库那就得用serialize了。

原创文章如转载,请注明:转载自火跃工作室
本文网址:http://www.huoyue.org/var_export-serialize

日志信息 »

该日志于2010-12-16 16:40由 火跃 发表在PHP+mysql分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。

相关日志 »

  • 暂无相关日志

没有评论

发表评论 »