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中文本数据翻页(留言本翻页)
Oct 09 PHP
一步一步学习PHP(5) 类和对象
Feb 16 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
May 04 PHP
PHP实现显示照片exif信息的方法
Jul 11 PHP
浅析Yii2 GridView实现下拉搜索教程
Apr 22 PHP
Yii框架用户登录session丢失问题解决方法
Jan 07 PHP
PHP 进度条函数的简单实例
Sep 19 PHP
PHP实现读取文件夹及批量重命名文件操作示例
Apr 15 PHP
PHP实现时间日期友好显示实现代码
Sep 08 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
Sep 16 PHP
Laravel框架Blade模板简介及模板继承用法分析
Dec 03 PHP
浅谈php常用的7大框架的优缺点
Jul 20 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中图片等比缩放的实例
2013/03/24 PHP
php简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
解析VS2010利用VS.PHP插件调试PHP的方法
2013/07/19 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
2014/05/04 PHP
php版本的cron定时任务执行器使用实例
2014/08/19 PHP
PHP处理Json字符串解码返回NULL的解决方法
2014/09/01 PHP
另一个javascript小测验(代码集合)
2011/07/27 Javascript
window.print打印指定div指定网页指定区域的方法
2014/08/04 Javascript
Bootstrap基础学习
2015/06/16 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
浅谈JavaScript面向对象--继承
2019/03/20 Javascript
新手快速入门JavaScript装饰者模式与AOP
2019/06/24 Javascript
JavaScript实现简单验证码
2020/08/24 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
在CentOS6上安装Python2.7的解决方法
2018/01/09 Python
Python matplotlib的使用并自定义colormap的方法
2018/12/13 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
基于python的列表list和集合set操作
2019/11/24 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
Python图像阈值化处理及算法比对实例解析
2020/06/19 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
简单的命令查看安装的python版本号
2020/08/28 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
Vilebrequin欧洲官网:法国豪华泳装品牌(男士沙滩裤)
2018/04/14 全球购物
加利福尼亚州威尼斯的女性奢侈品设计师服装和概念店:Mona Moore
2018/09/13 全球购物
英国名牌男装店:Standout
2021/02/17 全球购物
心理健康教育制度
2014/01/27 职场文书
遗嘱继承公证书
2014/04/09 职场文书
校企合作协议书
2014/04/16 职场文书
检查机关党的群众路线个人整改措施
2014/10/04 职场文书
Python实现简单的猜单词
2021/06/15 Python
Java 多态分析
2022/04/26 Java/Android