当前位置:

首页 > 编程开发 > 在 PHP 中用于数据序列化的函数

在 PHP 中用于数据序列化的函数

PHPserialize()用于将复杂的数据结构转换为特定字符串的格式,以便我们可以在运行的php脚本之外使用它们。简单地说,serialize()用于将数据结构放入lowercommondenominator,以便在文本文件、套接字或数据库中使用它们。本文演示了serialize()和unserialize()的使用。在PHP中演示对一维数组使用serialize()和unserialize()PHPserialize()只接受一个参数,即你要序列化的值,unserialize()也是如此。参见示例:&

本文目录

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

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

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


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

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

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

    "
    ; //serialize an assosiative array $demo_array= array( 'Val1' => 'jiyik1', 'Val2'=> 'jiyik2', 'Val3'=>'jiyik3'); $serialized_data = serialize($demo_array); echo $serialized_data."
    "
    ; //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()

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

    
    
    $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."


    "
    ; //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():

    
    
    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
    "
    ; // `serialize()` time $start_time = microtime(true); serialize($demo_array); $serialize_time = microtime(true) - $start_time; echo "`serialize()` serialized the array in $serialize_time seconds
    "
    ; // Comparing `json_encode()` and `serialize()` if ($json_time < $serialize_time) { printf("json_encode() is %01.2f%% faster than serialize() for this array
    "
    , ($serialize_time / $json_time - 1) * 100); } else if ($serialize_time < $json_time ) { printf("serialize() is %01.2f%% faster than json_encode() for this array
    "
    , ($json_time / $serialize_time - 1) * 100); } else { echo "Cannot Compare!
    "
    ; } ?>

    输出:

    
    `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() 可以运行得更快但余量非常低。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 后端开发 PHP编程
    相关文章 更多
    SQL增删改操作规范:INSERT、UPDATE与DELETE语句详解
    SQL增删改操作规范:INSERT、UPDATE与DELETE语句详解

    掌握SQL增删改核心规范:INSERT必须指定列清单以防结构变更错误;UPDATE和DELETE执行前务必通过SELECT确认WHERE条件范围;利用事务BEGIN/ROLLBACK机制实现误操作回滚。本文结合PostgreSQL语法与跨库差异,提供从语句编写到结果验证的完整安全操作流程,帮助开发者规避生产环境数据风险。

    接口分页查询怎么设置page和size参数
    接口分页查询怎么设置page和size参数

    遇到接口分页数据对不上?本文解析page和size参数的核心设置规则,包括起始索引选择、默认值配置及异常处理,助你避开常见的分页陷阱。

    Java发送post请求发送json数据的实现方法与代码示例
    Java发送post请求发送json数据的实现方法与代码示例

    深入解析Java发送JSON格式POST请求的实现机制,对比原生API与第三方库的代码差异,提供可复制的代码示例,并探讨超时设置、编码处理及微服务场景下的例外情况。

    php解析json内嵌json数据教程及取值方法
    php解析json内嵌json数据教程及取值方法

    本文详解PHP中json_decode处理嵌套JSON数据的机制,对比对象与数组模式的取值差异,提供防止空指针错误的健壮代码示例,帮助开发者快速定位解析失败原因。

    mysql添加字段语句及具体操作方法详解
    mysql添加字段语句及具体操作方法详解

    遇到需要给现有MySQL表增加新列的情况?本文详细解析ALTER TABLE ADD COLUMN语句的标准写法,包括如何在指定位置插入字段、设置默认值以及批量操作的技巧,助你避开锁表风险,轻松完成结构变更。

    python 雷达图开发环境搭建与验证:后端开发者实操指南
    python 雷达图开发环境搭建与验证:后端开发者实操指南

    针对后端开发者的 python 雷达图实操指南。包含基于官方文档的环境准备、venv 虚拟环境创建、pip 依赖管理及验证命令,提供清晰的排错决策图与适用边界说明。

    python 截图:环境准备、实操流程与故障排查指南
    python 截图:环境准备、实操流程与故障排查指南

    面向后端开发者的 python 截图技术文章,涵盖从环境检查、虚拟环境创建到依赖管理的完整流程。提供基于官方文档的验证命令与决策路径,帮助读者快速定位并解决截图任务中的环境问题。

    python编程语言:环境准备、实操流程与验证边界
    python编程语言:环境准备、实操流程与验证边界

    详解 python编程语言 的基础概念与实操步骤。涵盖版本检查、venv 虚拟环境隔离、pip 依赖安装及 sys.executable 验证方法,提供清晰的决策路径与适用边界说明。

    python面试准备:环境配置、实操流程与验证命令
    python面试准备:环境配置、实操流程与验证命令

    为后端开发者提供“python面试”相关的技术准备步骤,包括版本检查、虚拟环境创建、依赖安装及验证命令,严格遵循Python官方文档规范。

    python随机数开发避坑:环境隔离、标准库调用与验证流程
    python随机数开发避坑:环境隔离、标准库调用与验证流程

    详解 python随机数 开发中的环境准备与验证流程。涵盖 venv 虚拟环境创建、pip 依赖管理及 sys.executable 路径检查,帮助开发者规避版本冲突,确保代码在隔离环境中稳定运行。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。