php序列化函数serialize() 和 unserialize() 与原生函数对比

   这篇文章主要介绍了php序列化函数serialize() 和 unserialize() 与php原生序列化方法对比,有需要的小伙伴可以参考下。

  php中有格式化字符串并转换成数组或对象的好方法,即序列化处理。

  有两种序列化变量的方法。

  以下示例,使用 serialize() 和 unserialize() 函数:

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

// a complex array
$myvar = array(
'hello',
42,
array(1,'two'),
'apple'
);
 
// convert to a string
$string = serialize($myvar);
 
echo $string;
/* prints
a:4:{i:0;s:5:"hello";i:1;i:42;i:2;a:2:{i:0;i:1;i:1;s:3:"two";}i:3;s:5:"apple";}
*/
 
// you can reproduce the original variable
$newvar = unserialize($string);
 
print_r($newvar);
/* prints
Array
(
[0] => hello
[1] => 42
[2] => Array
(
[0] => 1
[1] => two
)
 
[3] => apple
)
*/

  这是原生的 PHP 序列化方法。

  然而,由于 JSON 近年来大受欢迎,PHP5.2 中已经加入了对 JSON 格式的支持。

  现在你可以使用 json_encode() 和 json_decode() 函数:

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

// a complex array
$myvar = array(
'hello',
42,
array(1,'two'),
'apple'
);
 
// convert to a string
$string = json_encode($myvar);
 
echo $string;
/* prints
["hello",42,[1,"two"],"apple"]
*/
 
// you can reproduce the original variable
$newvar = json_decode($string);
 
print_r($newvar);
/* prints
Array
(
[0] => hello
[1] => 42
[2] => Array
(
[0] => 1
[1] => two
)
 
[3] => apple
)
*/

  这将更为行之有效,尤其与 JavaScript 等许多其他语言兼容。

  注意:对于复杂的对象,某些信息可能会丢失。

  以上所述就是本文的全部内容了,希望大家能够喜欢。

时间: 2024-10-16 22:24:18

php序列化函数serialize() 和 unserialize() 与原生函数对比的相关文章

php函数serialize()与unserialize()

 php函数serialize()与unserialize()说明及案例.想要将已序列化的字符串变回 PHP 的值,可使用unserialize().serialize()可处理除了resource之外的任何类型.甚至可以serialize()那些包含了指向其自身引用的数组.你正serialize()的数组/对象中的引用也将被存储.   serialize()返回字符串,此字符串包含了表示value的字节流,可以存储于任何地方.这有利于存储或传递 PHP 的值,同时不丢失其类型和结构. 想要将已

php函数serialize()与unserialize()用法实例_php技巧

本文实例讲述了php函数serialize()与unserialize()用法.分享给大家供大家参考.具体方法如下: 该实例主要讲述了php函数serialize()与unserialize()说明及案例.想要将已序列化的字符串变回 PHP 的值,可使用unserialize().serialize()可处理除了resource之外的任何类型.甚至可以serialize()那些包含了指向其自身引用的数组.你正serialize()的数组/对象中的引用也将被存储.   serialize()返回字

浅谈php函数serialize()与unserialize()的使用方法_php实例

php函数serialize(): 这个函数作用就是序列化数据,返回一个可存储的字符串,该函数有利于存储或传递PHP的值,同时不丢失其类型和结构.所以我们在cms数据库里面经常看到这样的结构. 一般,我们将复杂或者数据量多而没有必要分开存储的数据封装成一个多维数组通过serialize()转成字符串,然后存进数据库,需要的时候再拿出来转成数组再用,而拿出了转成数组用的就是php的unserialize(),前面多了一个un嘛.直接上例子:   $a=array("周","满&

非常好用的两个PHP函数 serialize()和unserialize()_php技巧

今天,在做一个关于PING服务的东西,由于不想把ping服务地址放进数据库中,那样不好,ping服务本来不是一个效率不高的事,再放进数据库中,不但更加降低了程序的效率,还给服务器带来不必要的损耗,所以,想办法所ping服务地址用数组的方式放进了.conf文件中,才开始的设计思路是通过生成的php代码放到.php文件中,然后再把.php文件载入进来,后来,发现操作起来不太方便,所以,决定使用serialize()函数和unserialize()函数,这两个函数的用法真是绝配,一个是进行序列化存储,

使用PHP原生函数就一定比自定义函数快吗?

今天在阅读kohana源码中的Arr类的时候发现了这样一个函数  代码如下 复制代码 /**  * Fill an array with a range of numbers.  *  *     // Fill an array with values 5, 10, 15, 20  *     $values = Arr::range(5, 20);  *  * @param   integer $step   stepping  * @param   integer $max    endi

php中serialize()与unserialize()函数使用方法

php函数serialize(): 这个函数作用就是序列化数据,返回一个可存储的字符串,该函数有利于存储或传递PHP的值,同时不丢失其类型和结构.所以我们在cms数据库里面经常看到这样的结构. 一般,我们将复杂或者数据量多而没有必要分开存储的数据封装成一个多维数组通过serialize()转成字符串,然后存进数据库,需要的时候再拿出来转成数组再用,而拿出了转成数组用的就是php的unserialize(),前面多了一个un嘛.直接上例子:  代码如下 复制代码 $a=array("周"

PHP 序列化(serialize)格式详解

详解 由 andot 写的非常经典介绍PHP序列化的文章,原文来自: http://www.coolcode.cn/?p=170 1.前言PHP (从 PHP 3.05 开始)为保存对象提供了一组序列化和反序列化的函数:serialize.unserialize.不过在 PHP 手册中对这两个函数的说明仅限于如何使用,而对序列化结果的格式却没做任何说明.因此,这对在其他语言中实现 PHP 方式的序列化来说,就比较麻烦了.虽然以前也搜集了一些其他语言实现的 PHP 序列化的程序,不过这些实现都不完

浅谈php serialize()与unserialize()的用法_php实例

serialize()和unserialize()在php手册上的解释是:serialize - Generates a storable representation of a valueserialize - 产生一个可存储的值的表示unserialize - Creates a PHP value from a stored representationunserialize - 从已存储的表示中创建 PHP 的值很显然,"a stored representation"的解释翻

PHP中json_encode、json_decode与serialize、unserialize的性能测试分析_php技巧

于是便联想到PHP中的对象怎么样序列化存储性价比最高呢?接着想到了之前同事推荐的JSON编码和解码函数. 据他所说,json_encode和json_decode比内置的serialize和unserialize函数要高效. 于是我决定动手实验,证实一下同事所说的情况是否属实. 实验分别在PHP 5.2.13和PHP 5.3.2环境下进行. 用同一个变量,分别用以上方式进行编码或解码10000次,并得出每个函数执行10000次所需的时间. 以下是PHP 5.2.13环境其中一次测试结果: 复制代