讲师中心 微信公众号
AI工具推荐 视频效率加速

php数组和对象之间转换_php数据类型互转操作方法【教程】

轻芳同学_1745

轻芳同学_1745

发布时间:2025-12-12 20:02:03

|

495人浏览过

|

来源于php中文网

原创

PHP中数组与对象可相互转换:数组转对象用强制转换、json_encode/decode或递归函数;对象转数组用强制转换、get_object_vars()或json处理;特殊类型需适配,JsonSerializable接口可定制序列化行为。

php数组和对象之间转换_php数据类型互转操作方法【教程】

在PHP开发中,数组与对象之间的相互转换是常见需求,尤其在处理JSON数据、API响应或框架模型时。以下是实现这两种数据类型互转的具体操作方法:

一、数组转对象

将关联数组转换为标准对象(stdClass),可使数据支持对象属性访问语法,适用于动态属性读取和兼容面向对象的调用方式。

1、使用强制类型转换:将关联数组直接转换为stdClass对象。

2、使用json_encode与json_decode组合:先将数组编码为JSON字符串,再解码为对象,确保深层嵌套结构也被转换。

立即学习“PHP免费学习笔记(深入)”;

3、使用自定义递归函数:对多维数组逐层遍历,每一层的子数组均转换为stdClass实例,保留完整嵌套关系。

二、对象转数组

将对象转换为关联数组便于序列化、日志记录或与需数组输入的函数配合使用,同时避免对象不可见属性(如私有/受保护属性)被遗漏。

1、使用强制类型转换:对public属性的对象执行(array) $obj,仅导出可访问的公共属性。

2、使用get_object_vars()函数:获取对象当前作用域内所有可访问的public属性,返回关联数组。

3、使用json_encode与json_decode组合:先将对象转为JSON字符串,再解码为关联数组,自动跳过不可序列化的资源或闭包。

三、关联数组与StdClass双向无损转换

当需要保持键名大小写敏感性、避免自动类型转换干扰(如数字键转为整型索引)时,应避免依赖JSON中间格式,改用原生PHP机制保障一致性。

amphp
amphp

使用 AMPHP 框架编写非阻塞异步 PHP 代码,依赖 revolt/event-loop、amphp/amp ^3 及完整 amphp/* 生态(http‑server、http‑client 等)。

下载

1、定义辅助函数array_to_stdclass(),对数组键进行isset判断后赋值给新stdClass实例属性。

2、定义辅助函数stdclass_to_array(),遍历对象属性并逐个写入新数组,对子对象递归调用自身。

3、对含__get/__set魔术方法的对象,先调用get_object_vars()获取显式定义属性,再结合ReflectionObject提取动态属性。

四、转换时处理特殊类型字段

日期、资源、闭包、不可序列化对象等类型在转换过程中可能丢失或引发错误,需提前识别并做适配处理。

1、检测DateTime实例:在数组转对象前,将DateTime对象转为ISO8601字符串;在对象转数组后,对字符串字段匹配日期格式并重建DateTime。

2、跳过资源类型:在遍历对象属性时,使用is_resource()判断并跳过该字段,或替换为null占位。

3、过滤不可见属性:使用ReflectionObject获取所有属性,调用setAccessible(true)访问private/protected字段,再决定是否纳入转换结果。

五、使用JsonSerializable接口实现可控转换

通过实现JsonSerializable接口,可自定义对象在json_encode时的输出结构,间接控制其转数组行为,避免默认转换的不可预测性。

1、在类中声明JsonSerializable接口,并实现jsonSerialize()方法。

2、在jsonSerialize()中返回一个已按需处理的关联数组,例如隐藏敏感字段、格式化时间、展开嵌套对象。

3、调用json_encode()时自动触发该方法,再对结果使用json_decode($json, true)即可获得目标数组结构。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

1995

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2762

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

956

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

3099

2025.09.10

数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2491

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

514

2025.10.31

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

422

2026.02.12

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

529

2023.09.22

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

0

2026.09.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn