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

举报
迷彩 发表于 2023/07/21 23:32:25 2023/07/21
【摘要】 前言数组的序列化(serialize)用来将数组的数据转换为字符串,以方便传递和数据库的存储。与之相对应的操作就是反序列化(unserialize),把字符串数据转换为数组加以使用。数组的序列化主要通过serialize()函数来完成。字符串的反序列化主要通过unserialize()函数来完成。对象的序列化与反序列化下面通过实例介绍serialize()函数和unserialize()函数...

前言

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


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


总结

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。