php函数serialize()与unserialize()的简单学习

今天看class.quickskin.php代码的时候,看的一个没有见过的函数serialize,大神和小百都问了,也没弄清个头绪,结果一想本地测试一下不就得了,又猪头了一次。。。。
其实这样的问题很简单,自己动手一下就解决,很多时候还是我们太懒了。。。。
用语言来解释程序往往是很难的,尤其是像我这样的菜菜,很多时候还是看代码来得更容易些。
PHP5 手册里是的解释如下,咋一看有点云里雾里的感觉,但是测试之后再看一遍就明白多了。
简单说serialize($param)就是把$param的值序列化,貌似以前看过UCHOME数据库里某些字段就是存储的这样的数据(a:1:{s:7:"apppath";s:0:"";}),而unserialize($param)就像serialize的逆向操作,将一个序列化值转换为对应的字符串,该转换对数字变量和字符串变量可行,但是对数组和对象实例分别输出“Array”和“Catchable fatal error: Object of class Object could not be converted to string in ”错误信息。

serialize

(PHP 3 >= 3.0.5, PHP 4, PHP 5)

serialize --  产生一个可存储的值的表示

描述

string serialize ( mixed value )

serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。

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

想要将已序列化的字符串变回 PHP 的值,可使用 unserialize()serialize() 可处理除了 resource 之外的任何类型。甚至可以 serialize() 那些包含了指向其自身引用的数组。你正 serialize() 的数组/对象中的引用也将被存储。

以下是我简单写的一些测试代码,仅供学习参考:

本地输出结果如下:
serialize($intParam) output like this:
i:123;

serialize($stringParam) output like this:
s:16:"I love the world";

serialize($arrayParam) output like this:
a:3:{s:6:"fruits";a:3:{s:1:"a";s:6:"orange";s:1:"b";s:6:"banana";s:1:"c";s:5:"apple";}s:7:"numbers";a:6:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:4;i:5;i:5;i:6;}s:5:"holes";a:3:{i:0;s:5:"first";i:5;s:6:"second";i:6;s:5:"third";}}

serialize($objectParam) output like this:
O:6:"Object":1:{s:4:"memu";s:5:"index";}

unserialize(serialize($intParam)) result:
123

unserialize(serialize($stringParam)) result:
I love the world

unserialize(serialize(arrayParam)) result:
Array


Catchable fatal error: Object of class Object could not be converted to string in C:/Inetpub/wwwroot/test.php on line 27

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值