php函数serialize()与unserialize()用法实例


Posted in PHP onNovember 06, 2014

本文实例讲述了php函数serialize()与unserialize()用法。分享给大家供大家参考。具体方法如下:

该实例主要讲述了php函数serialize()与unserialize()说明及案例。想要将已序列化的字符串变回 PHP 的值,可使用unserialize()。serialize()可处理除了resource之外的任何类型。甚至可以serialize()那些包含了指向其自身引用的数组。你正serialize()的数组/对象中的引用也将被存储。

serialize()返回字符串,此字符串包含了表示value的字节流,可以存储于任何地方。这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。

想要将已序列化的字符串变回 PHP 的值,可使用unserialize()。serialize()可处理除了resource之外的任何类型。甚至可以serialize()那些包含了指向其自身引用的数组。你正serialize()的数组/对象中的引用也将被存储。

当序列化对象时,PHP 将试图在序列动作之前调用该对象的成员函数__sleep()。这样就允许对象在被序列化之前做任何清除操作。类似的,当使用unserialize()恢复对象时, 将调用__wakeup()成员函数。

注:在 PHP 3 中,对象属性将被序列化,但是方法则会丢失。PHP 4 打破了此限制,可以同时存储属性和方法。请参见类与对象中的序列化对象部分获取更多信息。
serialize()和unserialize()在php手册上的解释是:

serialize — Generates a storable representation of a value
serialize — 产生一个可存储的值的表示
unserialize — Creates a PHP value from a stored representation
unserialize — 从已存储的表示中创建 PHP 的值
serialize,翻译过来叫“连载, 使连续”,通常称它为“序列化”

这个函数很好用,特别是和unserialize一起配合使用
我觉得比较有用的地方就是将数据存入数据库或记录在文件中的时候
当然这种数据必须是比较复杂的(不复杂也不需要serialize了,我觉得起码得是一个一数组),而且是数据库中的非“索引或主键”,当然最好这个数据库字段在系统中和任何搜索程序无关,当然serialize后的数据其实还是能够搜索的,因为具体的数据并没有被加密或改变

<?php

//简单一点的

$array = array();

$array['key'] = 'website';

$array['value']='www.isoji.org';

$a = serialize($array);

echo $a;

unset($array);

$a = unserialize($a);

print_r($a);
//声明一个类

class dog {

var $name;

var $age;

var $owner;

function dog($in_name="unnamed",$in_age="0",$in_owner="unknown") {

$this->name = $in_name;

$this->age = $in_age;

$this->owner = $in_owner;

}

function getage() {

return ($this->age * 365);

}
function getowner() {

return ($this->owner);

}
function getname() {

return ($this->name);

}

}

//实例化这个类

$ourfirstdog = new dog("Rover",12,"Lisa and Graham");

//用serialize 函数将这个实例转化为一个序列化的字符串

$dogdisc = serialize($ourfirstdog);

print $dogdisc; //$ourfirstdog 已经序列化为字符串 O:3:"dog":3:{s:4:"name";s:5:"Rover";s:3:"age";i:12;s:5:"owner";s:15:"Lisa and Graham";}

print '<BR>';

/*

在这里你可以将字符串 $dogdisc 存储到任何地方如 session,cookie,数据库,php文件

*/

//我们在此注销这个类

unset($ourfirstdog);

/* 还原操作 */

/*

在这里将字符串 $dogdisc 从你存储的地方读出来如 session,cookie,数据库,php文件

*/
//我们在这里用 unserialize() 还原已经序列化的对象

$pet = unserialize($dogdisc); //此时的 $pet 已经是前面的 $ourfirstdog 对象了

//获得年龄和名字属性

$old = $pet->getage();

$name = $pet->getname();

//这个类此时无需实例化可以继续使用,而且属性和值都是保持在序列化之前的状态

print "Our first dog is called $name and is $old days old<br>";

print '<BR>';

?>

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
几个学习PHP的网址
Nov 25 PHP
支持php4、php5的mysql数据库操作类
Jan 10 PHP
基于php在各种web服务器的运行模式详解
Jun 03 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
Jun 20 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
May 04 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
Apr 17 PHP
深入浅析yii2-gii自定义模板的方法
Apr 26 PHP
Thinkphp框架开发移动端接口(1)
Aug 18 PHP
php安装dblib扩展,连接mssql的具体步骤
Mar 02 PHP
PHP实现留言板功能的详细代码
Mar 25 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
May 13 PHP
PHP xpath提取网页数据内容代码解析
Jul 16 PHP
php实现webservice实例
Nov 06 #PHP
php的dl函数用法实例
Nov 06 #PHP
PHP写日志的实现方法
Nov 05 #PHP
PHP实现UTF-8文件BOM自动检测与移除实例
Nov 05 #PHP
PHP动态编译出现Cannot find autoconf的解决方法
Nov 05 #PHP
php画图实例
Nov 05 #PHP
PHP队列用法实例
Nov 05 #PHP
You might like
几种显示数据的方法的比较
2006/10/09 PHP
php下载远程文件类(支持断点续传)
2008/11/14 PHP
PHP CKEditor 上传图片实现代码
2009/11/06 PHP
基于php权限分配的实现代码
2013/04/28 PHP
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
php使用指定字符列表生成随机字符串的方法
2015/04/18 PHP
PHP滚动日志的代码实现
2015/06/10 PHP
25个好玩的JavaScript小游戏分享
2011/04/22 Javascript
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
原生javascript实现简单的datagrid数据表格
2015/01/02 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
2016/02/02 Javascript
Angular.js中$apply()和$digest()的深入理解
2016/10/13 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
ES6 新增的创建数组的方法(小结)
2019/08/01 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
JS实现字体背景跑马灯
2020/01/06 Javascript
vue使用原生swiper代码实例
2020/02/05 Javascript
浅谈python数据类型及类型转换
2017/12/18 Python
Python决策树分类算法学习
2017/12/22 Python
python编程嵌套函数实例代码
2018/02/11 Python
python安装教程
2018/02/28 Python
Python实现的txt文件去重功能示例
2018/07/07 Python
基于Tensorflow使用CPU而不用GPU问题的解决
2020/02/07 Python
pip install 使用国内镜像的方法示例
2020/04/03 Python
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
蹦床仓库:Trampoline Warehouse
2018/12/06 全球购物
zooplus波兰:在线宠物店
2019/07/21 全球购物
培训心得体会
2013/12/29 职场文书
财产分割协议书范本
2014/11/03 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
关于童年的读书笔记
2015/06/26 职场文书
学校扫黄打非工作总结
2015/10/15 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL