数码资讯
PHP中多种序列化和反序列化方法的分析
序列化是将变量转换为保存或传输字符串的过程,反序列化是在适当的时间将字符串转换为原始变量,结合这两个过程,可以方便地存储和传输数据,从而使程序更易于维护。 1。序列化和序列化功能 这两个函数是PHP中序列化和序列化数据的常用函数。 复制代码代码如下所示: < PHP 美元=阵列(A = > 'app
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
序列化是将变量转换为保存或传输字符串的过程,反序列化是在适当的时间将字符串转换为原始变量,结合这两个过程,可以方便地存储和传输数据,从而使程序更易于维护。
1。序列化和序列化功能
这两个函数是PHP中序列化和序列化数据的常用函数。
复制代码代码如下所示:
< PHP
美元=阵列(A = > 'apple,B = > 'banana,C> 'coconut);
序列化数组
$ S =连载(美元);
回声$;
输出结果:A:3:{ 1:A;S:5:苹果S:1;B;s:6:香蕉s:1;;C;;s:7:;;}
回声';
/ /反序列化
$ O =序列化(美元的);
print_r($ O);
输出阵列({苹果>
>
当数组包含如双引号,单引号字符,或结肠的数字,他们被反序列化并可能有问题。为了解决这个问题,一个聪明的诀窍是使用base64_encode和base64_decode。
复制代码代码如下所示:
$ obj =阵();
序列化
$ S = base64_encode(连载($ obj));
/ /反序列化
原=序列化(base64_decode美元(美元的));
但是base64编码会增加字符串的长度。为了解决这个问题,它可以用来与gzcompress。
/ /定义用于序列化对象的功能
功能my_serialize($ obj)
{
returnbase64_encode(gzcompress(连载($ obj)));
}
/ /反序列化
功能my_unserialize($ TXT)
{
returnunserialize(gzuncompress(base64_decode($ TXT)));
}
2。json_encode和json_decode
使用JSON格式化序列化和反序列化是一个不错的选择:
它是用json_encode和json_decode格式输出序列化和序列化格式快得多。
JSON格式可读性强。
JSON格式小于结果连载。
JSON格式是开放的、可移植的,也可以在其他语言中使用。
复制代码代码如下所示:
美元=阵列(A = > 'apple,B = > 'banana,C> 'coconut);
序列化数组
S = json_encode美元(美元);
回声$;
输出::苹果
回声';
/ /反序列化
O = json_decode美元(美元的);
在上面的例子中,输出的json_encode长度明显短于序列化输出长度在前一个例子。
三.var_export和评价
的var_export函数输出变量为字符串;eval执行字符串作为PHP代码,和原变量的内容序列化。
复制代码代码如下所示:
美元=阵列(A = > 'apple,B = > 'banana,C> 'coconut);
序列化数组
S = var_export美元($,真的);
回声$;
输出/结果:阵列(A = 'apple,B = C = 'coconut 'banana ',')
回声';
/ /反序列化
eval($ my_var =。S;
print_r($ my_var);
4。wddx_serialize_value和WDDX反序列化
的wddx_serialize_value功能可以序列化数组变量和一个XML字符串的形式输出。
复制代码代码如下所示:
美元=阵列(A = > 'apple,B = > 'banana,C> 'coconut);
序列化数组
S = wddx_serialize_value美元(美元);
回声$;
输出(见输出字符串/来源:applebananacoconut)
回声';
/ /反序列化
O = wddx_deserialize美元(美元的);
print_r($ O);
输出结果:数组(1)
正如您所看到的,XML标记的字符较多,这使得这种格式的序列化仍然占用大量空间。
总结
以上所有功能都可以正常执行时,数组变量是连续的,但将其应用于对象。例如,在json_encode序列化的对象会失败。当对象是被反序列化,序列化和评估将有不同的影响。
1。序列化和序列化功能
这两个函数是PHP中序列化和序列化数据的常用函数。
复制代码代码如下所示:
< PHP
美元=阵列(A = > 'apple,B = > 'banana,C> 'coconut);
序列化数组
$ S =连载(美元);
回声$;
输出结果:A:3:{ 1:A;S:5:苹果S:1;B;s:6:香蕉s:1;;C;;s:7:;;}
回声';
/ /反序列化
$ O =序列化(美元的);
print_r($ O);
输出阵列({苹果>
>
当数组包含如双引号,单引号字符,或结肠的数字,他们被反序列化并可能有问题。为了解决这个问题,一个聪明的诀窍是使用base64_encode和base64_decode。
复制代码代码如下所示:
$ obj =阵();
序列化
$ S = base64_encode(连载($ obj));
/ /反序列化
原=序列化(base64_decode美元(美元的));
但是base64编码会增加字符串的长度。为了解决这个问题,它可以用来与gzcompress。
/ /定义用于序列化对象的功能
功能my_serialize($ obj)
{
returnbase64_encode(gzcompress(连载($ obj)));
}
/ /反序列化
功能my_unserialize($ TXT)
{
returnunserialize(gzuncompress(base64_decode($ TXT)));
}
2。json_encode和json_decode
使用JSON格式化序列化和反序列化是一个不错的选择:
它是用json_encode和json_decode格式输出序列化和序列化格式快得多。
JSON格式可读性强。
JSON格式小于结果连载。
JSON格式是开放的、可移植的,也可以在其他语言中使用。
复制代码代码如下所示:
美元=阵列(A = > 'apple,B = > 'banana,C> 'coconut);
序列化数组
S = json_encode美元(美元);
回声$;
输出::苹果
回声';
/ /反序列化
O = json_decode美元(美元的);
在上面的例子中,输出的json_encode长度明显短于序列化输出长度在前一个例子。
三.var_export和评价
的var_export函数输出变量为字符串;eval执行字符串作为PHP代码,和原变量的内容序列化。
复制代码代码如下所示:
美元=阵列(A = > 'apple,B = > 'banana,C> 'coconut);
序列化数组
S = var_export美元($,真的);
回声$;
输出/结果:阵列(A = 'apple,B = C = 'coconut 'banana ',')
回声';
/ /反序列化
eval($ my_var =。S;
print_r($ my_var);
4。wddx_serialize_value和WDDX反序列化
的wddx_serialize_value功能可以序列化数组变量和一个XML字符串的形式输出。
复制代码代码如下所示:
美元=阵列(A = > 'apple,B = > 'banana,C> 'coconut);
序列化数组
S = wddx_serialize_value美元(美元);
回声$;
输出(见输出字符串/来源:applebananacoconut)
回声';
/ /反序列化
O = wddx_deserialize美元(美元的);
print_r($ O);
输出结果:数组(1)
正如您所看到的,XML标记的字符较多,这使得这种格式的序列化仍然占用大量空间。
总结
以上所有功能都可以正常执行时,数组变量是连续的,但将其应用于对象。例如,在json_encode序列化的对象会失败。当对象是被反序列化,序列化和评估将有不同的影响。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。