PHP常见的序列化与反序列化操作实例分析


Posted in PHP onOctober 28, 2019

本文实例讲述了PHP常见的序列化与反序列化操作。分享给大家供大家参考,具体如下:

1.概念

serialize() 把变量和它们的值编码成文本形式

unserialize() 恢复原先变量 

2.序列化例子

输入输出

$arr=array();
$arr['name']='张三';
$arr['age']='22';
$arr['sex']='男';
$arr['phone']='123456789';
$arr['address']='上海市浦东新区';
var_dump($arr);

array(5) {
["name"]=> string(6) "张三"
["age"]=> string(2) "22"
["sex"]=> string(3) "男"
["phone"]=> string(9) "123456789"
["address"]=> string(21) "上海市浦东新区"
}

序列化操作

$info=serialize($arr);
var_dump($info);

输出结果

string(140) "a:5:{s:4:"name";s:6:"张三";s:3:"age";s:2:"22";s:3:"sex";s:3:"男";s:5:"phone";s:9:"123456789";s:7:"address";s:21:"上海市浦东新区";}"

解析

使用序列化serialize($arr)函数,将数组中元素的键和值按照规则顺序连接成字符串。

a:5标志序列化为array包含5个键值对,

s:4标志内容为字符串包含4个字符。

3.反序列化列子

$zhangsan=unserialize($info);
var_dump($zhangsan);

输出

array(5) {
["name"]=> string(6) "张三"
["age"]=> string(2) "22"
["sex"]=> string(3) "男"
["phone"]=> string(9) "123456789"
["address"]=> string(21) "北京市海淀区"
}

4.优缺点

通过序列化我们可以将一些模块化的数据使用字符串的形式存储在数据库或session等,可以减少创建众多繁琐的数据表字段,当然序列化为字符串存储会增加额外的空间,应合理的设计和应用。

这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
第九节 绑定 [9]
Oct 09 PHP
六酷社区论坛HOME页清新格调免费版 下载
Mar 07 PHP
PHP配置文件中最常用四个ini函数
Mar 19 PHP
PHP5 操作MySQL数据库基础代码
Sep 29 PHP
解析php框架codeigniter中如何使用框架的session
Jun 24 PHP
解析在zend Farmework下如何创立一个FORM表单
Jun 28 PHP
浅析echo(),print(),print_r(),return之间的区别
Nov 27 PHP
CodeIgniter控制器之业务逻辑实例分析
Jan 20 PHP
PHP检测数据类型的几种方法(总结)
Mar 04 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
php基于环形链表解决约瑟夫环问题示例
Nov 07 PHP
PHP对接阿里云虚拟号的实现(号码隐私保护)
Apr 06 PHP
PHP接入微信H5支付的方法示例
Oct 28 #PHP
PHP判断当前使用的是什么浏览器(推荐)
Oct 27 #PHP
php+layui数据表格实现数据分页渲染代码
Oct 26 #PHP
layui数据表格自定义每页条数limit设置
Oct 26 #PHP
在 Laravel 中动态隐藏 API 字段的方法
Oct 25 #PHP
Laravel 实现添加多语言提示信息
Oct 25 #PHP
Laravel5.5 动态切换多语言的操作方式
Oct 25 #PHP
You might like
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
PHP PDOStatement::errorInfo讲解
2019/01/31 PHP
TP3.2框架分页相关实现方法分析
2020/06/03 PHP
javascript编程起步(第六课)
2007/01/10 Javascript
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
js 弹出框 替代浏览器的弹出框
2010/10/29 Javascript
JS实现超精简响应鼠标显示二级菜单代码
2015/09/12 Javascript
轻松学习jQuery插件EasyUI EasyUI表单验证
2015/12/01 Javascript
JS简单实现点击复制链接的方法
2016/08/03 Javascript
Angularjs 制作购物车功能实例代码
2016/09/14 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
2017/01/19 Javascript
非常实用的vue导航钩子
2017/03/20 Javascript
vue单页应用加百度统计代码(亲测有效)
2018/01/31 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
2020/09/29 Javascript
JavaScript动态生成表格的示例
2020/11/02 Javascript
Python的subprocess模块总结
2014/11/07 Python
python3中bytes和string之间的互相转换
2017/02/09 Python
Python处理CSV与List的转换方法
2018/04/19 Python
python实现简易数码时钟
2021/02/19 Python
python处理multipart/form-data的请求方法
2018/12/26 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
2019/05/27 Python
python print出共轭复数的方法详解
2019/06/25 Python
Django自定义用户登录认证示例代码
2019/06/30 Python
Python 自动登录淘宝并保存登录信息的方法
2019/09/04 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
2020/02/26 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
Linux如何压缩可执行文件
2013/10/21 面试题
房地产财务管理制度
2014/02/02 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
成本会计实训报告
2014/11/05 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书