首页 > 编程语言 >【web 开发】PHP8中数组的序列化和反序列化

【web 开发】PHP8中数组的序列化和反序列化

时间:2023-05-23 23:04:29浏览次数:43  
标签:web 对象 serialize unserialize PHP8 数组 序列化 属性

前言

数组的序列化(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

相关文章

  • webpack-了解devServer中常用的选项
    devServer节点在webpack.config.js配置文件中,可以通过devServer节点对webpack-dev-server插件进行更多的配置,示例代码如下:devServer:{ open:ture,//初次打包完成后,自动打开浏览器 host:'127.0.0.1',//实时打包所使用的主机地址 port:80,//实时打包所使用的端口号}注意:凡是......
  • php反序列化逃逸
    之前就对字符串逃逸这一块理解的不是很深刻,下面通过一位师傅的博客来进一步深入理解一下有关php字符串逃逸的相关内容。贴上师傅的博客地址:https://blog.csdn.net/qq_45521281/article/details/107135706先来说一下什么是字符串逃逸,就是我们可以构造一些恶意代码,让其在反序列化......
  • System.Text.Json匿名对象反序列化
    以前就是一直使用Newtonsoft.Json用起来还是挺舒服的。由于JSON的应用越来越广,现在.NETCore都内置了System.Text.Json可以直接对JSON进行操作,不过两个东西的体验依然有点区别。有时候我们会遇到的从第三方传递过来的jsonstring对象,对其进行解析并不需要所有的字段,......
  • 编写javaweb用到的基本依赖,mybatis-config.xml代码,SqlSessionFactoryUtils.java
    这篇文章仅仅作为记录,供以后复制粘贴使用pom.xml<dependencies><!--Servlet--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</vers......
  • Exp8 Web综合
    @目录一、实践内容二、实践原理三、实践过程记录1、Web前端HTML2、Web前端JavaScript3、Web后端:MySQL基础4、Web后端:编写PHP网页,连接数据库,进行用户认证5、最简单的SQL注入、XSS攻击测试SQL注入XSS攻击6、选做Webgoat或类似平台的SQL注入、XSS、CSRF攻击各一例SQL注入攻击——字符......
  • 记录--使用率比较低的10个Web API
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助avaScript中有些API可能使用率比较低,下面我们逐一介绍它们的用法和使用场景。至于标题,主要是想让你进来看看,兄弟们别打我!BlobAPIBlobAPI用于处理二进制数据,可以方便地将数据转换为Blob对象或从Blob对象读取数......
  • 设置启动WebSocket并配置程序池
    开启WebSocket服务1.导航到“控制面板”>“程序”>“程序和功能”>“启用或禁用Windows功能”(位于屏幕左侧)。2.打开以下节点:“InternetInformationServices”>“万维网服务”>“应用程序开发功能”。3.选择“WebSocket协议”功能。选择“确定”。配置IIS应......
  • web3 产品介绍:Mirror.xyz是一个创新的去中心化出版平台
    Mirror.xyz是一个创新的去中心化出版平台,它使作者能够创建、发布和管理自己的内容,并与读者建立直接的经济联系。在本文中,我们将介绍Mirror.xyz的主要特点、功能以及如何使用它来发布和消费内容。一、Mirror.xyz的特点去中心化出版:Mirror.xyz采用去中心化的方式,将权力还给作者......
  • MVC4 部署 could not load file or assembly system.web.http.webhost.....出错
    1.确保项目是.net4.0版本 2.如下图标出的部分,确保这个dll引用是项目本地,找到项目下的“引用”,找到对应的引用右键属性,将“复制本地”改为True,这里我们可以在项目下新建一个存入dll的文件夹,将这些dll放在这个文件夹里面,路径引用改为复制本地为True后就自动引用这个文件夹的路......
  • 轮询、长轮询、websocket
    轮询、长轮询、websocket一、轮询在一些需要进行实时查询的场景下应用比如投票系统:大家一起在一个页面上投票在不刷新页面的情况下,实时查看投票结果1、后端代码fromflaskimportFlask,render_template,request,jsonifyapp=Flask(__name__)USERS={......