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 相关文章推荐
用 PHP5 轻松解析 XML
Dec 04 PHP
php下删除字符串中HTML标签的函数
Aug 27 PHP
mysql下创建字段并设置主键的php代码
May 16 PHP
PHP 简易输出CSV表格文件的方法详解
Jun 20 PHP
PHP获取和操作配置文件php.ini的几个函数介绍
Jun 24 PHP
php读取csv数据保存到数组的方法
Jan 03 PHP
php验证码的制作思路和实现方法
Nov 12 PHP
php生成二维码图片方法汇总
Dec 17 PHP
PHP三种方式实现链式操作详解
Jan 21 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
Feb 10 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
Oct 30 PHP
如何用PHP实现分布算法之一致性哈希算法
May 26 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.ini不生效问题解决方法(上传大于8M的文件)
2013/06/14 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
2013/07/01 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
2014/06/20 PHP
ThinkPHP实现将本地文件打包成zip下载
2014/06/26 PHP
php的ZipArchive类用法实例
2014/10/20 PHP
php实现购物车产品删除功能(2)
2020/07/23 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
prototype Element学习笔记(篇一)
2008/10/26 Javascript
JavaScript 错误处理与调试经验总结
2010/08/10 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
查找iframe里元素的方法可传参
2013/09/11 Javascript
javascript打开word文档的方法
2014/04/16 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
2014/11/03 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
AngularJS基础 ng-paste 指令简单示例
2016/08/02 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
nodejs用gulp管理前端文件方法
2018/06/24 NodeJs
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
Vue组件通信的几种实现方法
2019/04/25 Javascript
基于iview的router常用控制方式
2019/05/30 Javascript
[49:59]KG vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
Python 获得命令行参数的方法(推荐)
2018/01/24 Python
解决python3 pika之连接断开的问题
2018/12/18 Python
tensorflow实现训练变量checkpoint的保存与读取
2020/02/10 Python
python实现在线翻译
2020/06/18 Python
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
汉语专业应届生求职信
2013/10/01 职场文书
2014年元旦联欢会活动策划方案
2014/02/16 职场文书
大学学习计划书范文
2014/05/02 职场文书
管理工程专业求职信
2014/08/10 职场文书
车辆委托书范本
2014/10/05 职场文书
小学大队委竞选口号
2015/12/25 职场文书
六年级作文之关于梦
2019/10/22 职场文书
python实现简单石头剪刀布游戏
2021/10/24 Python
Redis+AOP+自定义注解实现限流
2022/06/28 Redis