写点什么

【web 开发基础】PHP8 中数组的序列化和反序列化(54)

作者:迷彩
  • 2022-12-30
    广东
  • 本文字数:736 字

    阅读完需:约 2 分钟

前言

数组的序列化(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 的对象是用数组来模拟的,因此我们可以把对象转为数组,就能看到对象所拥有的属性。其实对象就是有一堆数据。所以,我们可以把一个对象存储起来,以便需要的时候使用。这时候就会使用到对象的序列化。所谓的对象序列化,就是把保存在内存中的各种对象状态(属性)保存起来,并且在需要时可以还原出来。


注:在序列化和反序列化时都需要包含类的对象的定义,不然有可能出现在反序列化对象时,找不到该对象的类的定义,而返回不正确的结果。


总结

对象序列化之后,存储的只是对象的属性。类是由属性和方法组成的,而对象则是属性的集合,由同一个类生成的不同对象,拥有各自不同的属性,但共享了类的代码空间中的方法区域的代码


发布于: 刚刚阅读数: 6
用户头像

迷彩

关注

我的工作是常年写bug|公众号:编程架构之美 2020-06-18 加入

修bug的菜鸟~公众号:“互联网有啥事”已改名为“编程架构之美”

评论

发布
暂无评论
【web 开发基础】PHP8中数组的序列化和反序列化(54)_数组_迷彩_InfoQ写作社区