php序列化函数serialize与 unserialize用法解析

发布时间:2020-03-11编辑:脚本学堂
有关php序列化函数serialize与unserialize的用法,这二个函数实现php对象的序列化处理,与php原生方法实现序列化有什么不同呢,可以参考本例中的代码,加以理解。

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

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

使用 serialize() 和 unserialize() 函数
 

复制代码 代码示例:
// 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() 函数:
// 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 等许多其他语言兼容。
注意:对于复杂的对象,某些信息可能会丢失。