PHP串行化(序列化)跟反串行化

php中文网
发布: 2016-06-13 11:12:52
原创
1064人浏览过

PHP串行化(序列化)和反串行化

这个和java的序列话是一样的。只是java要实现serializable这个空接口。


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

unserialize() 恢复原先变量

立即学习PHP免费学习笔记(深入)”;

什么情况下需要序列化 当你想把的内存中的对象写入到硬盘 数据库的时候;当你想在网络上传送对象的时候;
登录后复制

当把这些序列化的数据放在URL中在页面之间会传递时,需要对这些数据调用urlencode(),以确保在其中的URL元字符进行处理

margic_quotes_gpc和magic_quotes_runtime配置项的设置会影响传递到unserialize()中的数据。
如果magic_quotes_gpc项是启用的,那么在URL、POST变量以及cookies中传递的数据在反序列化之前必须用stripslashes()进行处理:如果magic_quotes_runtime是启用的,那么在向文件中写入序列化的数据之前必须用addslashes()进行处理,而在读取它们之前则必须用stripslashes()进行处理:


也可用array,把一个数组对象系列化。

<?php	class Data{		var $index;		var $name;				function __construct($index,$name){			$this->index = $index;			$this->name = $name;		}	}		$data1 = new Data(1, "hello");	$data2 = new Data(2, "world");	$arr = array();	//用ArrayObject也可以。	//$arr = new ArrayObject();	$arr[0] = $data1;	$arr[1] = $data2;	$str = serialize($arr);		$file = fopen("tmp.txt", "w");	fwrite($file, $str);	fclose($file);	//$file =fopen("tmp.txt", "r");	$data = file_get_contents("tmp.txt");		//反序列化得到原来的数组对象。	$obj = unserialize($data);	print_r($obj[0]);	echo $obj[0]->name;	?>
登录后复制

tmp.txt的内容为:

a:2:{i:0;O:4:"Data":2:{s:5:"index";i:1;s:4:"name";s:5:"hello";}i:1;O:4:"Data":2:{s:5:"index";i:2;s:4:"name";s:5:"world";}}
登录后复制


PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号