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 09 PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
Apr 20 PHP
PHP文件打开、关闭、写入的判断与执行代码
May 24 PHP
PHP之sprintf函数用法详解
Nov 12 PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 PHP
phpstorm配置Xdebug进行调试PHP教程
Dec 01 PHP
phpMyAdmin安装并配置允许空密码登录
Jul 04 PHP
php metaphone()函数的定义和用法
May 15 PHP
PHP表单数据写入MySQL数据库的代码
May 31 PHP
magento后台无法登录解决办法的两种方法
Dec 09 PHP
php微信开发之图片回复功能
Jun 14 PHP
YII框架http缓存操作示例
Apr 29 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
MySQL中create table语句的基本语法是
2007/01/15 PHP
DedeCMS dede_channeltype表字段注释
2010/04/07 PHP
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
分享一个超好用的php header下载函数
2014/01/31 PHP
PHP制作图形验证码代码分享
2014/10/23 PHP
PHP设置头信息及取得返回头信息的方法
2016/01/25 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
js 提交和设置表单的值
2008/12/19 Javascript
javascript CSS画图之基础篇
2009/07/29 Javascript
js对象关系图 方便dom操作
2012/03/18 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
Node.js安装教程和NPM包管理器使用详解
2014/08/16 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
vue-cli3 karma单元测试的实现
2019/01/18 Javascript
JavaScript实现图片放大镜效果
2019/06/27 Javascript
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
使用Python脚本对Linux服务器进行监控的教程
2015/04/02 Python
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
python设计tcp数据包协议类的例子
2019/07/23 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
如何利用python发送邮件
2020/09/26 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
波兰购物网站:MALL.PL
2019/05/01 全球购物
屈臣氏菲律宾官网:Watsons菲律宾
2020/06/30 全球购物
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
新闻记者实习自我鉴定
2013/09/19 职场文书
精彩的大学生自我评价
2013/11/17 职场文书
财务支持类个人的自我评价
2014/02/14 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书