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 strncasecmp字符串比较的小技巧
Jan 04 PHP
php批量缩放图片的代码[ini参数控制]
Feb 11 PHP
常用的PHP数据库操作方法(MYSQL版)
Jun 08 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
Apr 28 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
Jun 14 PHP
php后门URL的防范
Nov 12 PHP
php foreach正序倒序输出示例代码
Jul 01 PHP
Linux下php5.4启动脚本
Aug 03 PHP
php给每个段落添加空格的方法
Mar 20 PHP
YII2框架中使用yii.js实现的post请求
Apr 09 PHP
PHP实现根据密码长度显示安全条
Jul 04 PHP
PHP parse_ini_file函数的应用与扩展操作示例
Jan 07 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
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
2011/10/29 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
jQuery ajax cache缓存问题
2010/07/01 Javascript
读jQuery之四(优雅的迭代)
2011/06/20 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
jquery 设置style:display的方法
2015/01/29 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
基于jquery实现放大镜效果
2015/08/17 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
js修改onclick动作的四种方法(推荐)
2016/08/18 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
Node.js 8 中的重要新特性
2017/06/28 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
javascript按顺序加载运行js方法
2017/12/01 Javascript
jQuery实现的手动拖动控制进度条效果示例【测试可用】
2018/04/18 jQuery
Vue2.0生命周期的理解
2018/08/20 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
2020/01/05 Javascript
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
Python 闭包的使用方法
2017/09/07 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
Python模块future用法原理详解
2020/01/20 Python
康拓普公司Java笔面试
2016/09/23 面试题
一套.net面试题及答案
2016/11/02 面试题
某科技软件测试面试题
2013/05/19 面试题
药学专业个人的自我评价
2013/12/31 职场文书
小学教师寄语大全
2014/04/03 职场文书
爱护公共设施倡议书
2014/08/29 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
党的群众路线教育实践活动心得体会范文
2014/11/05 职场文书
2015年市场部工作总结
2015/04/30 职场文书
2016年基层党组织创先争优承诺书
2016/03/25 职场文书