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后门代码解析
Jul 05 PHP
ThinkPHP中的三大自动简介
Aug 22 PHP
PHP中加密解密函数与DES加密解密实例
Oct 17 PHP
PHP基于imap获取邮件实例
Nov 11 PHP
thinkphp常见路径用法分析
Dec 02 PHP
PHP中的替代语法介绍
Jan 09 PHP
php实现插入数组但不影响原有顺序的方法
Mar 27 PHP
PHP中返回引用类型的方法
Apr 03 PHP
PHP获取文件行数的方法
Jun 10 PHP
php获取一定范围内取N个不重复的随机数
May 28 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
Nov 30 PHP
Laravel 自动生成验证的实例讲解:login / logout
Oct 14 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 字符转义 注意事项
2009/05/27 PHP
PHP中将数组转成XML格式的实现代码
2011/08/08 PHP
php将时间差转换为字符串提示
2011/09/07 PHP
php格式输出文件var_export函数实例
2014/11/15 PHP
php使用timthumb生成缩略图的方法
2016/01/22 PHP
php fread读取文件注意事项
2016/09/24 PHP
PHP页面跳转操作实例分析(header方法)
2016/09/28 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
2020/04/27 PHP
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
入门基础学习 ExtJS笔记(一)
2010/11/11 Javascript
调用innerHTML之后onclick失效问题的解决方法
2014/01/28 Javascript
php中给js数组赋值方法
2014/03/10 Javascript
js中this用法实例详解
2015/05/05 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
详解javascript传统方法实现异步校验
2016/01/22 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
Python实现优先级队列结构的方法详解
2016/06/02 Python
Python科学计算之Pandas详解
2017/01/15 Python
python在每个字符后添加空格的实例
2018/05/07 Python
python写入文件自动换行问题的方法
2019/07/05 Python
python 使用装饰器并记录log的示例代码
2019/07/12 Python
Window系统下Python如何安装OpenCV库
2020/03/05 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
2020/08/03 Python
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
运动会稿件100字
2014/02/21 职场文书
2014学校庆三八妇女节活动总结
2014/03/01 职场文书
勤俭节约倡议书
2014/04/14 职场文书
商场促销活动策划方案
2014/08/18 职场文书
村道德模范事迹材料
2014/08/28 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers