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 时间日期操作实战
Aug 26 PHP
PHP输入流php://input介绍
Sep 18 PHP
基于PHP常用字符串的总结(待续)
Jun 07 PHP
基于PHP文件操作的详细诠释
Jun 21 PHP
浅谈php和.net的区别
Sep 28 PHP
避免Smarty与CSS语法冲突的方法
Mar 02 PHP
AES加解密在php接口请求过程中的应用示例
Oct 26 PHP
PHP 7.1新特性的汇总介绍
Dec 16 PHP
PHP 无限级分类
May 04 PHP
php封装的pdo数据库操作工具类与用法示例
May 08 PHP
Laravel向公共模板赋值方法总结
Jun 25 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 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
详解WordPress中分类函数wp_list_categories的使用
2016/01/04 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
php微信开发之关注事件
2018/06/14 PHP
总结PHP中初始化空数组的最佳方法
2019/02/13 PHP
javascript 网页跳转的方法
2008/12/24 Javascript
JavaScript 私有成员分析
2009/01/13 Javascript
JQuery读取XML文件数据并显示的实现代码
2009/12/16 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
文本域光标操作的jQuery扩展分享
2014/03/10 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
2015/10/29 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
Vue.js路由vue-router使用方法详解
2017/03/20 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
微信小程序云开发修改云数据库中的数据方法
2019/05/18 Javascript
微信小程序列表时间戳转换实现过程解析
2019/10/12 Javascript
详解vue路由
2020/08/05 Javascript
[05:43]VG.R战队教练Mikasa专访:为目标从未停止战斗
2016/08/02 DOTA
[36:20]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.17
2020/12/18 DOTA
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
python flask 多对多表查询功能
2017/06/25 Python
win7+Python3.5下scrapy的安装方法
2018/07/31 Python
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
详解python中list的使用
2019/03/15 Python
Python基于execjs运行js过程解析
2020/11/27 Python
Html5调用手机摄像头并实现人脸识别的实现
2018/12/21 HTML / CSS
计算 s=(x*y)1/2,用两个宏定义来实现
2016/08/11 面试题
自荐信的两点禁忌
2013/10/30 职场文书
金融管理专业毕业生求职信
2014/03/12 职场文书
詹天佑教学反思
2014/04/30 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
2014年教务处工作总结
2014/12/03 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
2015年度学校应急管理工作总结
2015/10/22 职场文书
2016年情人节问候语
2015/11/11 职场文书
2016护理专业求职自荐书
2016/01/28 职场文书