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函数serialize()与unserialize()相关推荐
- 非常好用的两个PHP函数 serialize()和unserialize()
使用serialize()函数和unserialize()函数,这两个函数的用法真是绝配,一个是进行序列化存储,另一个则是进行序列化恢复,方便极了 今天,在做一个关于PING服务的东西,由于不想把pi ...
- PHP多种序列化/反序列化的方法(serialize和unserialize函数)
serialize和unserialize函数这两个是序列化和反序列化PHP中数据的常用函数.<?php$a = array('a' => 'Apple' ,'b' => 'bana ...
- serialize和unserialize函数
序列化是将变量转换为可保存或传输的字符串的过程:反序列化就是在适当的时候把这个字符串再转化成原来的变量使用.这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性. 1. serialize和 ...
- php json_decode 效率,浅析PHP中json_encode、json_decode与serialize、unserialize的性能测试...
今天偶然在想,如果用PHP写一个类似BDB的基于文件的Key-Value小型数据库用于存储非结构化的记录型数据,不知道效率会如何? 于是便联想到PHP中的对象怎么样序列化存储性价比最高呢?接着想到了之 ...
- golang 解析php序列化,golang实现php里的serialize()和unserialize()序列和反序列方法详解...
Golang 实现 PHP里的 serialize() . unserialize() 安装 go get -u github.com/techleeone/gophp/serialize 用法 pa ...
- serialize()与unserialize()
serialize()与unserialize() 简单说serialize($param)就是把$param的值序列化,貌似以前看过UCHOME数据库里某些字段就是存储的这样的数据(a:1:{s:7 ...
- golang 解析php序列化,golang实现php里的serialize()和unserialize()序列和反序列方法
本文实例讲述了PHP查询附近的人及其距离的实现方法.分享给大家供大家参考,具体如下: ?php//获取该点周围的4个点$distance = 1;//范围(单位千米)$lat = 113.873643 ...
- php 不等于 的函数吗,PHP不常见的函数整理
下面为大家带来一篇 PHP不常见的函数整理.下面就为你详细讲解一下,希望对您的学习PHP有所帮助. sys_getloadavg() 这个函数返回当前系统的负载均值信息(当然 Windows 下不适用 ...
- 九个PHP很有用的功能
2019独角兽企业重金招聘Python工程师标准>>> 一函数的任意数目的参数 你可能知道PHP允许你定义一个默认参数的函数.但你可能并不知道PHP还允许你定义一个完全任意的参数的函 ...
最新文章
- Java多线程——线程的优先级和生命周期
- Qt之QObjectCleanupHandler使用介绍
- 什么是SSLP和ISSR?
- 齐次坐标,怎么你也叫Homogeneous
- QFile和C语言对文件操作的性能比较.--读取double型二进制数据文件
- Restricted Boltzmann Machine (RBM)限制波尔兹曼机
- jQuery 为动态添加的元素绑定事件
- linux eclipse 菜单,Ubuntu 16.04中的Eclipse Mars菜单栏选项失效
- mongodb 字符串转bson_MongoDB之bson的介绍
- PAT A1053 Path of Equal Weight [树的DFS遍历]
- jquery 删除数组元素
- NB-LoT 云平台对接及使用
- python论文降重_论文怕被查重怎么办?你的降重神器来了|简明python教程|python入门|python教程...
- c语言怎样识别字母大小写,c语言islower()函数如何判断字符是否为小写字母
- 宝塔安装RSSHub订阅服务
- Mobile-Unet
- 按计算机应用领域分类,按计算机用途分类
- 常用的评论/帖子/文章排序算法四(牛顿冷却定律)
- 树莓派3 搭建tensorflow并进行物体识别
- MATLAB 暖通,MATLAB在暖通空调课程教学中的应用
热门文章
- 大根堆的删除c语言,二叉堆(一)之 C语言详解
- jquery控制只监听数字_jQuery老矣,尚能饭否
- linux 存储映射lun 给_如何在 Linux 上扫描/检测新的 LUN 和 SCSI 磁盘 | Linux 中国
- MySQL面试题 | 附答案解析(十四)
- Windows下命令行及Java+Tesseract-OCR对图像进行(字母+数字+中文)识别,亲测可行
- boost--文件、目录操作
- Python解析照片EXIF信息,获取坐标位置
- 图像金字塔与resize函数
- 实验四 定位与导航算法
- c4d+ps打造抽象NFT加密艺术 Create Abstract NFT Crypto Art with Cinema 4D + Photoshop