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 相关文章推荐
多文件上载系统完整版
Oct 09 PHP
PHP简单系统数据添加以及数据删除模块源文件下载
Jun 07 PHP
php实现事件监听与触发的方法
Nov 21 PHP
10个php函数实用却不常见
Oct 13 PHP
PHP-FPM实现性能优化
Mar 31 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
Mar 02 PHP
浅谈PHP中类和对象的相关函数
Apr 26 PHP
PHP读取、解析eml文件及生成网页的方法示例
Sep 04 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
php爬取天猫和淘宝商品数据
Feb 23 PHP
PHP registerXPathNamespace()函数讲解
Feb 03 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 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新手上路(七)
2006/10/09 PHP
PHP入门之常量简介和系统常量
2014/05/12 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
2018/05/24 PHP
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
使用jquery为table动态添加行的实现代码
2011/03/30 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
JavaScript中的闭包介绍
2015/03/15 Javascript
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
js比较日期大小的方法
2015/05/12 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
基于javascript实现的快速排序
2016/12/02 Javascript
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
vue 权限认证token的实现方法
2018/07/17 Javascript
Node.js开发之套接字(socket)编程入门示例
2019/11/05 Javascript
[42:23]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第二场 12.10
2020/12/13 DOTA
Python使用django获取用户IP地址的方法
2015/05/11 Python
Python实现统计单词出现的个数
2015/05/28 Python
详解Python的Django框架中的Cookie相关处理
2015/07/22 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
Pytorch1.5.1版本安装的方法步骤
2020/12/31 Python
Python如何实现Paramiko的二次封装
2021/01/30 Python
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
淘宝网店营销策划书
2014/01/11 职场文书
安全生产活动月方案
2014/03/09 职场文书
怎样填写就业意向
2014/04/02 职场文书
IT工程师岗位职责
2014/07/04 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
2014年个人工作总结范文
2014/11/07 职场文书
老兵退伍感言
2015/08/03 职场文书
送给客户微信问候语!
2019/07/04 职场文书
Python加密与解密模块hashlib与hmac
2022/06/05 Python