纵有疾风起
人生不言弃

关于PHP中的 serialize () 和 unserialize () 的使用(即关于PHP中的值与已存储的表示的相互转换)

有时,我们会碰到这样的数据(字符串)

1 a:3:{i:0;s:44:"/Uploads/images/2017-07-21/5971a9a08ad57.png";i:1;s:44:"/Uploads/images/2017-07-21/5971a9a5eb19c.png";i:2;s:44:"/Uploads/images/2017-07-21/5971a9a99e7df.png";}

面对这样的字符串要想按照常规思路以分隔符拆分字符串的话会相当麻烦,其实,这种字符串是经过 serialize()  函数序列化后的字符串。演示如下:

1.写一个数组

1 $asd = array('/Uploads/images/2017-07-21/5971a9a08ad57.png','/Uploads/images/2017-07-21/5971a9a08ad57.png','/Uploads/images/2017-07-21/5971a9a08ad57.png');

关于PHP中的 serialize () 和 unserialize () 的使用(即关于PHP中的值与已存储的表示的相互转换)插图

2.利用 serialize() 函数序列化这个数组,此时我们就会得到类似于一开始我们碰到的那种字符串

1 dump(serialize($asd));

关于PHP中的 serialize () 和 unserialize () 的使用(即关于PHP中的值与已存储的表示的相互转换)插图1

3.再利用 unserialize() 函数将序列化后的字符串转换回 PHP 的值

1 $qwe = serialize($asd);2 dump(unserialize($qwe));

关于PHP中的 serialize () 和 unserialize () 的使用(即关于PHP中的值与已存储的表示的相互转换)插图2

注:

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

 

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

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

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

当序列化对象时,PHP 将试图在序列动作之前调用该对象的成员函数 __sleep()。这样就允许对象在被序列化之前做任何清除操作。类似的,当使用 unserialize() 恢复对象时, 将调用 __wakeup() 成员函数。 

unserialize —  从已存储的表示中创建 PHP 的值

unserialize() 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。返回的是转换之后的值,可为 integerfloatstringarray 或 object。如果传递的字符串不可解序列化,则返回 FALSE

文章转载于:https://www.cnblogs.com/shenzikun1314/p/7278180.html

原著是一个有趣的人,若有侵权,请通知删除

未经允许不得转载:起风网 » 关于PHP中的 serialize () 和 unserialize () 的使用(即关于PHP中的值与已存储的表示的相互转换)
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录