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下常用正则表达式整理
Oct 26 PHP
求PHP数组最大值,最小值的代码
Oct 31 PHP
PHP URL路由类实例
Nov 12 PHP
smarty中post用法实例
Nov 28 PHP
新浪SAE搭建PHP项目教程
Jan 28 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
Mar 27 PHP
PHP学习笔记(三):数据类型转换与常量介绍
Apr 17 PHP
php基于session实现数据库交互的类实例
Aug 03 PHP
PHP如何使用Memcached
Apr 05 PHP
Netbeans 8.2将支持PHP7 更精彩
Jun 13 PHP
PHP7标量类型declare用法实例分析
Sep 26 PHP
PHP一致性hash分布式算法封装类定义与用法示例
Aug 04 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加密解密类实例分析
2015/04/20 PHP
使用XHGui来测试PHP性能的教程
2015/07/03 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
php实现算术验证码功能
2018/12/05 PHP
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
js去除重复字符串两种实现方法
2013/01/09 Javascript
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
Js和JQuery获取鼠标指针坐标的实现代码分享
2015/05/25 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
2016/10/10 Javascript
JavaScript 实现的checkbox经典实例分享
2016/10/16 Javascript
js判断出两个字符串最大子串的函数实现方法
2016/11/01 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
JavaScript实现简单的树形菜单效果
2017/06/23 Javascript
浅谈如何使用webpack构建多页面应用
2018/05/30 Javascript
jquery+ajax实现异步上传文件显示进度条
2020/08/17 jQuery
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
python实现将内容分行输出
2015/11/05 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
Python实现基于KNN算法的笔迹识别功能详解
2018/07/09 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
Python unittest单元测试openpyxl实现过程解析
2020/05/27 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
彪马美国官网:PUMA美国
2017/03/09 全球购物
《一株紫丁香》教学反思
2014/02/19 职场文书
婚礼司仪主持词
2014/03/14 职场文书
外贸会计专业自荐信
2014/06/22 职场文书
2014年秋季开学寄语
2014/08/02 职场文书
2014年医生工作总结
2014/11/21 职场文书
荆州古城导游词
2015/02/06 职场文书
恰同学少年观后感
2015/06/08 职场文书
追悼会悼词大全
2015/06/23 职场文书
使用pandas模块实现数据的标准化操作
2021/05/14 Python
「魔导具师妲莉亚永不妥协~从今天开始的自由职人生活~」1、2卷发售宣传CM公开
2022/03/21 日漫