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 相关文章推荐
fleaphp rolesNameField bug解决方法
Apr 23 PHP
洪恩在线成语词典小偷程序php版
Apr 20 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
Oct 03 PHP
兼容ie6浏览器的php下载文件代码分享
Jul 14 PHP
thinkphp3.2.2前后台公用类架构问题分析
Nov 25 PHP
php实现window平台的checkdnsrr函数
May 27 PHP
php实现mysql数据库分表分段备份
Jun 18 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
Jan 07 PHP
php微信公众平台开发之微信群发信息
Sep 13 PHP
Zend Framework入门教程之Zend_Config组件用法详解
Dec 09 PHP
php使用变量动态创建类的对象用法示例
Feb 06 PHP
PHP常用正则表达式精选(推荐)
May 28 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 session常见问题集锦及解决办法总结
2007/03/18 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
javascript当中的代码嗅探扩展原生对象和原型(prototype)
2013/01/11 Javascript
浅析JavaScript中的CSS属性及命名规范
2013/11/28 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
AngularJS学习笔记之TodoMVC的分析
2015/02/22 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
AngularJs入门教程之环境搭建+创建应用示例
2016/11/01 Javascript
JS实现的四级密码强度检测功能示例
2017/05/11 Javascript
实现一个完整的Node.js RESTful API的示例
2017/09/29 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
JavaScript实现音乐自动切换和轮播
2017/11/05 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
2018/03/03 Javascript
js技巧之十几行的代码实现vue.watch代码
2018/06/09 Javascript
node微信开发之获取access_token+自定义菜单
2019/03/17 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
Vue实现多页签组件
2021/01/14 Vue.js
Python使用filetype精确判断文件类型
2017/07/02 Python
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
同时安装Python2 &amp; Python3 cmd下版本自由选择的方法
2017/12/09 Python
Python实现矩阵加法和乘法的方法分析
2017/12/19 Python
Python数据拟合与广义线性回归算法学习
2017/12/22 Python
Python实现的径向基(RBF)神经网络示例
2018/02/06 Python
Python视频爬虫实现下载头条视频功能示例
2018/05/07 Python
Python安装tar.gz格式文件方法详解
2020/01/19 Python
Python 将 QQ 好友头像生成祝福语的实现代码
2020/05/03 Python
美国背景检查、公共记录和人物搜索网站:BeenVerified
2018/02/25 全球购物
护士思想汇报
2014/01/12 职场文书
一年级语文下册复习计划
2015/01/17 职场文书
2015年党建工作汇报材料
2015/06/25 职场文书
Oracle中update和select 关联操作
2022/01/18 Oracle
英镑符号 £
2022/02/17 杂记
解决WINDOWS电脑开机后桌面没有任何图标
2022/04/09 数码科技