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 危险函数全解析
Sep 09 PHP
PHP简洁函数小结
Aug 12 PHP
Apache下禁止php文件被直接访问的解决方案
Apr 25 PHP
4种PHP异步执行的常用方式
Dec 24 PHP
使用php实现从身份证中提取生日
May 09 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
Nov 23 PHP
Yii框架表单提交验证功能分析
Jan 07 PHP
php读取XML的常见方法实例总结
Apr 25 PHP
Yii2实现自定义独立验证器的方法
May 05 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
Mar 15 PHP
PHP实现小程序批量通知推送
Nov 27 PHP
PHP的简单跳转提示的实现详解
Mar 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
基于数据库的在线人数,日访问量等统计
2006/10/09 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
基于Web标准的UI组件 — 树状菜单(2)
2006/09/18 Javascript
用javascript实现点击链接弹出&quot;图片另存为&quot;而不是直接打开
2007/08/15 Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
2012/07/25 Javascript
jquery异步跨域访问代码
2013/06/28 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
Angular2 之 路由与导航详细介绍
2017/05/26 Javascript
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
详解Vue中的MVVM原理和实现方法
2020/07/15 Javascript
前端 javascript 实现文件下载的示例
2020/11/24 Javascript
[02:46]2014DOTA2国际邀请赛 选手为你解读比赛MVP充满梦想
2014/07/09 DOTA
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
python迭代器的使用方法实例
2013/11/21 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
python3实现表白神器
2019/04/09 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
python让函数不返回结果的方法
2020/06/22 Python
意大利在线高尔夫商店:Online Golf
2021/03/09 全球购物
Java中的类包括什么内容?设计时要注意哪些方面
2012/05/23 面试题
采购部部门职责
2013/12/15 职场文书
电子信息工程专业推荐信
2014/02/14 职场文书
婚前财产公证书
2014/04/10 职场文书
三八妇女节趣味活动方案
2014/08/23 职场文书
二审代理词范文
2015/05/25 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
2021/06/26 Python