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与XML的PDF文档生成技术
Oct 09 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
Jul 01 PHP
PHP小教程之实现链表
Jun 09 PHP
PHP中使用SimpleXML检查XML文件结构实例
Jan 07 PHP
9个实用的PHP代码片段分享
Jan 22 PHP
PHP处理CSV表格文件的常用操作方法总结
Jul 01 PHP
如何使用PHP给图片加水印
Oct 12 PHP
thinkphp5框架实现的自定义扩展类操作示例
May 16 PHP
PHP实现字母数字混合验证码功能
Jul 11 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
Dec 12 PHP
PHP设计模式之命令模式示例详解
Dec 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
探讨file_get_contents与curl效率及稳定性的分析
2013/06/06 PHP
实现PHP多线程异步请求的3种方法
2014/01/17 PHP
php替换字符串中间字符为省略号的方法
2015/05/04 PHP
浅谈php7的重大新特性
2015/10/23 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
如何在PHP中生成随机数
2020/06/04 PHP
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
如何开发出更好的JavaScript模块
2017/12/22 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
javascript实现倒计时关闭广告
2021/02/09 Javascript
Python通过poll实现异步IO的方法
2015/06/04 Python
简单掌握Python中glob模块查找文件路径的用法
2016/07/05 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
python发送告警邮件脚本
2018/09/17 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
Python基础学习之函数方法实例详解
2019/06/18 Python
python不同系统中打开方法
2020/06/23 Python
关于HTML5语义标签的实践(blog页面)
2016/07/12 HTML / CSS
2019年.net常见面试问题
2012/02/12 面试题
法学个人求职信范文
2014/01/27 职场文书
励志演讲稿500字
2014/08/21 职场文书
加强机关作风建设心得体会
2014/10/22 职场文书
赔偿协议书
2015/01/27 职场文书
销售经理岗位职责
2015/01/31 职场文书
债务追讨律师函
2015/06/24 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
pytorch 6 batch_train 批训练操作
2021/05/28 Python
教你使用VS Code的MySQL扩展管理数据库的方法
2022/01/22 MySQL
vue/cli 配置动态代理无需重启服务的方法
2022/05/20 Vue.js