前言
数组的序列化(serialize)用来将数组的数据转换为字符串,以方便传递和数据库的存储。与之相对应的操作就是反序列化(unserialize),把字符串数据转换为数组加以使用。数组的序列化主要通过serialize()函数来完成。字符串的反序列化主要通过unserialize()函数来完成。
对象的序列化与反序列化
下面通过实例介绍serialize()函数和unserialize()函数的使用方法以及技巧:
<?php
$array = array('张三'=>28,'鲁班'=>25,'李四'=>25,'王五'=>18,'李白'=>19,'杜甫'=>20,'白居易'=>21);
$str = serialize($array);
echo $str."\r\n\r\n";
$new_arr = unserialize($str);
print_r($new_arr);
?>
serialize()和unserialize()两个函数的使用比较简单,但是通过这样的方法对数组数据的存储和传递将会十分方便。比如,可以直接把序列化之后的数组数据存放在数据库的某个字段中。在使用时再通过反序列化进行处理。对象同样可以序列化,我们都知道在PHP中,对象是由属性和方法组成的。对象是由属性组成的这很好理解,一个对象的属性是它区别于另一个对象的关键所在。由于PHP的对象是用数组来模拟的,因此我们可以把对象转为数组,就能看到对象所拥有的属性。其实对象就是有一堆数据。所以,我们可以把一个对象存储起来,以便需要的时候使用。这时候就会使用到对象的序列化。所谓的对象序列化,就是把保存在内存中的各种对象状态(属性)保存起来,并且在需要时可以还原出来。
注:在序列化和反序列化时都需要包含类的对象的定义,不然有可能出现在反序列化对象时,找不到该对象的类的定义,而返回不正确的结果。
总结
对象序列化之后,存储的只是对象的属性。类是由属性和方法组成的,而对象则是属性的集合,由同一个类生成的不同对象,拥有各自不同的属性,但共享了类的代码空间中的方法区域的代码
标签:web,对象,serialize,unserialize,PHP8,数组,序列化,属性 From: https://blog.51cto.com/micai01/6334857