我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PHP 中的序列化函数

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PHP 中的序列化函数

PHP serialize() 用于将复杂的数据结构转换为特定字符串的格式,以便我们可以在运行的 PHP 脚本之外使用它们。

简单地说,serialize() 用于将数据结构放入 lower common denominator,以便在文本文件、套接字或数据库中使用它们。

本文演示了 serialize()unserialize() 的使用。


在 PHP 中演示对一维数组使用 serialize()unserialize()

PHP serialize() 只接受一个参数,即你要序列化的值,unserialize() 也是如此。参见示例:


<?php
$demo_array = array("jiyik1", "jiyik2", "jiyik3");
//serialize one dimensional array
$serialized_data = serialize($demo_array);
echo $serialized_data."<br>";
//Userialize the serialized array
$Unserialized_data = unserialize($serialized_data);
print_r($Unserialized_data);
echo "<br><br>";

//serialize an assosiative array
$demo_array= array( 'Val1' => 'jiyik1', 'Val2'=> 'jiyik2', 'Val3'=>'jiyik3');
$serialized_data = serialize($demo_array);
echo $serialized_data."<br>";
//Userialize the serialized array
$Unserialized_data = unserialize($serialized_data);
print_r($Unserialized_data);
?>

PHP serialize() 一个简单数组和一个关联数组,然后通过 unserialize() 反转操作。

输出:


a:3:{i:0;s:6:"jiyik1";i:1;s:6:"jiyik2";i:2;s:6:"jiyik3";}
Array
(
    [0] => jiyik1
    [1] => jiyik2
    [2] => jiyik3
)


a:3:{s:4:"Val1";s:6:"jiyik1";s:4:"Val2";s:6:"jiyik2";s:4:"Val3";s:6:"jiyik3";}
Array
(
    [Val1] => jiyik1
    [Val2] => jiyik2
    [Val3] => jiyik3
)

序列化生成一个字符串,其中包含给定数组的所有数据。序列化字符串,数组的 a=size,数组编号的 i=count,数组值的 s=size

输出显示,如果数组不是关联的,serialize 仍将根据关联数组生成输出。


在 PHP 中演示对多维数组使用 Serialize()Unserialize()

对于多维数组,输出将是相似的。


<?php
$multidimentional_array= array(
    array(
        array("jiyik1", 10, 15.5),
        array("jiyik2", 15, 25.5)
       ),
    array(
        array("jiyik1", 15, 25.5),
        array("jiyik2", 20, 30.5)
       ),
    array(
        array("jiyik1", 20, 30.5),
        array("jiyik2", 30, 35.5) 
    )
);
//serialize one dimensional array
$serialized_data = serialize($multidimentional_array);
echo $serialized_data."<br><br><br>";
//Userialize the serialized array
$Unserialized_data = unserialize($serialized_data);
print_r($Unserialized_data);
?>

输出:


a:3:{i:0;a:2:{i:0;a:3:{i:0;s:6:"jiyik1";i:1;i:10;i:2;d:15.5;}i:1;a:3:{i:0;s:6:"jiyik2";i:1;i:15;i:2;d:25.5;}}i:1;a:2:{i:0;a:3:{i:0;s:6:"jiyik1";i:1;i:15;i:2;d:25.5;}i:1;a:3:{i:0;s:6:"jiyik2";i:1;i:20;i:2;d:30.5;}}i:2;a:2:{i:0;a:3:{i:0;s:6:"jiyik1";i:1;i:20;i:2;d:30.5;}i:1;a:3:{i:0;s:6:"jiyik2";i:1;i:30;i:2;d:35.5;}}}


Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => jiyik1
                    [1] => 10
                    [2] => 15.5
                )

            [1] => Array
                (
                    [0] => jiyik2
                    [1] => 15
                    [2] => 25.5
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [0] => jiyik1
                    [1] => 15
                    [2] => 25.5
                )

            [1] => Array
                (
                    [0] => jiyik2
                    [1] => 20
                    [2] => 30.5
                )

        )

    [2] => Array
        (
            [0] => Array
                (
                    [0] => jiyik1
                    [1] => 20
                    [2] => 30.5
                )

            [1] => Array
                (
                    [0] => jiyik2
                    [1] => 30
                    [2] => 35.5
                )

        )

)

PHP 中 Serialize()json_encode() 的区别

json_encode() 是 PHP 中另一个将数组或对象转换为字符串的内置方法,它使用 JSON 来执行操作,类似地,对于 unserialize()json_decode() 可以用过的。

serialize()json_encode() 之间有一些区别。

  • Serialize() 通常比 json_encode() 快。
  • JSON 更便携。
  • 对于 UTF-8 字符,你不需要在 serialize() 中执行任何操作,但使用 json_encode() 你需要添加一个额外参数 JSON_UNESCAPED_UNICODE。否则,JSON 会将 UTF-8 转换为 Unicode 转义序列。
  • serialize() 有对象的原始类的内存,而 JSON 没有;他们将数据存储为 stdClass 的实例。

让我们比较一下 serialize()json_encode()


<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

$demo_array= array( 'Val1' => 'jiyik1', 'Val2'=> 'jiyik2', 'Val3'=>'jiyik3');

// `json_encode()` time
$start_time = microtime(true);
json_encode($demo_array);
$json_time = microtime(true) - $start_time;
echo "`json_encode()` encoded the array in $json_time seconds<br>";

// `serialize()` time
$start_time = microtime(true);
serialize($demo_array);
$serialize_time = microtime(true) - $start_time;
echo "`serialize()` serialized the array in $serialize_time seconds<br>";

// Comparing `json_encode()` and `serialize()`
if ($json_time < $serialize_time) {
    printf("json_encode() is %01.2f%% faster than serialize() for this array<br>", ($serialize_time / $json_time - 1) * 100);
}
else if ($serialize_time < $json_time ) {
    printf("serialize() is %01.2f%% faster than json_encode() for this array<br>", ($json_time / $serialize_time - 1) * 100);
} else {
    echo "Cannot Compare!<br>";
}
?>

输出:


`json_encode()` encoded the array in 9.0599060058594E-6 seconds
`serialize()` serialized the array in 5.0067901611328E-6 seconds
serialize() is 80.95% faster than json_encode() for this array

正如我们所见,对于给定的数组,serialize()json_encode 快 88.89%。

通常 serialize() 是较快的一种,但有时 json_encode() 可以运行得更快但余量非常低。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PHP 中的序列化函数

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PHP 中的序列化函数

PHP serialize() 用于将复杂的数据结构转换为特定字符串的格式,以便我们可以在运行的 PHP 脚本之外使用它们。简单地说,serialize() 用于将数据结构放入 lower common denominator,以便在文本文
PHP 中的序列化函数
2024-02-27

golang函数类型的序列化与反序列化

golang 函数类型可通过 encoding/gob 包实现序列化和反序列化。序列化:注册自定义类型并使用 gob.newencoder 将函数类型编码为字节数组。反序列化:使用 gob.newdecoder 从字节数组反序列化函数类型。
golang函数类型的序列化与反序列化
2024-04-29

PHP反序列化函数怎么使用

PHP的反序列化函数是`unserialize()`,用于将一个已经经过序列化的字符串转换回原始的PHP值。使用方法非常简单,只需要将序列化字符串作为`unserialize()`函数的参数即可,例如:$serializedString
2023-10-25

PHP接口性能优化之数据序列化与反序列化优化(如何优化PHP接口中的数据序列化与反序列化?)

PHP接口性能优化涉及数据序列化和反序列化。选择合适的技术至关重要。JSON序列化轻巧快速,但冗长。序列化函数处理复杂数据,但较慢。自定义序列化类提供更精确的控制。对象缓冲和预序列化可提高加载速度。选择适当的数据格式和优化反序列化(使用json_decode、禁用错误抑制、使用严格类型)可显著提升性能。
PHP接口性能优化之数据序列化与反序列化优化(如何优化PHP接口中的数据序列化与反序列化?)
2024-04-02

PHP中的序列化和反序列化是什么

这篇“PHP中的序列化和反序列化是什么”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“PHP中的序列化和反序列化是什么”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来就让
2023-06-06

PHP 中数组转对象序列化及反序列化的应用场景?

php数组转对象序列化的应用场景包括数据存储、传输和缓存。反序列化用于数据检索、接收和修改。具体来说,序列化将数组转换为包含对象状态的字符串,而反序列化将该字符串还原为实际对象。通过序列化和反序列化,数据可以高效地存储、传输和修改,例如将数
PHP 中数组转对象序列化及反序列化的应用场景?
2024-04-30

C++ 函数库如何进行序列化和反序列化?

c++++ 函数库序列化和反序列化指南序列化:创建输出流并将其转换为存档格式。将对象序列化到存档中。反序列化:创建输入流并将其从存档格式恢复。从存档中反序列化对象。实战示例:序列化:创建输出流。创建存档对象。创建对象并将其序列化到存档中。反
C++ 函数库如何进行序列化和反序列化?
2024-04-18
2023-09-01

php中json 序列化为 [] 的弊端

这篇文章主要介绍了php中json 序列化为 [] 的弊端的相关资料,需要的朋友可以参考下
2023-03-20

模板类与模板函数序列化和反序列化的实现方式?

模板类和模板函数的序列化和反序列化可以通过多种方式实现,包括使用二进制归档、自有序列化、函数指针和函数对象。使用二进制归档可将模板类直接写入/读取到文件,自有序列化则定义自定义序列化/反序列化方法。对于模板函数,可使用函数指针或函数对象对其
模板类与模板函数序列化和反序列化的实现方式?
2024-04-24

Storm中的数据序列化和反序列化是如何实现的

在Storm中的数据序列化和反序列化是通过实现backtype.storm.serialization.Serializer接口来实现的。开发人员可以自定义实现这个接口,以定义如何序列化和反序列化数据。在实现Serializer接口时,需
Storm中的数据序列化和反序列化是如何实现的
2024-03-13

如何在Storm中处理数据的序列化和反序列化

在Apache Storm中处理数据的序列化和反序列化通常涉及使用序列化库或框架,如Apache Avro,Apache Thrift,等。这些库可以帮助将数据转换为字节流以便在Storm拓扑中传输,并在接收端进行反序列化以还原原始数据。
如何在Storm中处理数据的序列化和反序列化
2024-03-07

用Gob在Golang中实现数据序列化/反序列化

在 golang 中使用 gob 包序列化数据需以下步骤:为要序列化的类型实现 gobencode 和 gobdecode 接口。使用 gob.newencoder 和 gob.newdecoder 创建编码器和解码器。使用编码器对数据进行
用Gob在Golang中实现数据序列化/反序列化
2024-04-08

如何优化Redis中整数的序列化

在Redis中存储整数时,可以通过以下几种方式来优化序列化:使用整数编码:Redis中的整数可以使用不同的编码方式进行存储,包括 int、embstr、raw 和 quicklist。可以通过配置 Redis 的整数编码方式来选择最适合的方
如何优化Redis中整数的序列化
2024-04-29

PHP数据结构:序列化与反序列化的艺术,实现数据持久化与传输

在 php 中,序列化将数据结构转换为字符串,而反序列化将字符串还原为数据结构,实现数据的持久化和传输。序列化函数 serialize 将数据结构转换为字符串,而 unserialize 函数从字符串中还原序列化后的数据。序列化可用于数据持
PHP数据结构:序列化与反序列化的艺术,实现数据持久化与传输
2024-05-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录