新闻中心

php的对象怎么转换成为数组_php对象转数组json_decode加true法【教程】

2025-12-09
浏览次数:
返回列表
PHP对象转数组有五种方法:一、json_decode($json, true)直接解析JSON为关联数组;二、get_object_vars()提取公有属性;三、(array)强制转换,注意私有属性键名含不可见字符;四、递归函数object_to_array处理嵌套结构;五、Serializable接口配合json_encode/json_decode间接转换。

php的对象怎么转换成为数组_php对象转数组json_decode加true法【教程】

如果需要将 PHP 对象转换为数组,尤其是处理从 JSON 解析得到的对象时,存在多种直接且可靠的方法。以下是实现该转换的具体步骤:

一、使用 json_decode($json, true) 直接解析为关联数组

当原始数据是 JSON 字符串时,可在调用 json_decode 时传入第二个参数 true,强制返回关联数组而非 stdClass 对象。此方法适用于已知输入为合法 JSON 字符串的场景。

1、定义一个包含对象结构的 JSON 字符串,例如 $json = '{"name":"Alice","age":30}';

2、调用 $arr = json_decode($json, true);

3、此时 $arr 是一个普通 PHP 关联数组,可通过 $arr['name'] 直接访问值。

4、若原 JSON 中嵌套了对象或数组,所有层级均会递归转为数组结构,无需额外遍历或类型判断

二、使用 get_object_vars() 提取公有属性

该函数仅返回对象的可访问(public)属性组成的关联数组,不处理私有或受保护属性,也不递归解析嵌套对象。

1、声明一个类并实例化,例如 class Person { public $name = 'Bob'; public $city = 'Shanghai'; }

2、创建对象 $obj = new Person();

3、调用 $arr = get_object_vars($obj);

4、结果为 ['name' => 'Bob', 'city' => 'Shanghai'],私有属性和方法不会出现在返回数组中

三、使用强制类型转换 (array) $obj

PHP 支持将对象强制转为数组,但仅适用于具有 public 属性的对象,且键名前会附加类名与不可见字符,格式为 "\0ClassName\0PropertyName"。

1、定义一个含 public 属性的对象 $obj = new stdClass(); $obj->id = 123; $obj->title = 'Test';

2、执行 $arr = (array) $obj;

3、检查 $arr 键名,可见其保持为 'id' 和 'title',因 stdClass 无命名空间修饰。

4、若对象来自自定义类且含 private 属性,对应键名将包含不可见字符,需用 var_dump 查看真实结构

四、递归遍历对象并构建数组

当对象内含嵌套对象、数组或其他复杂结构,且需统一转为纯数组时,可编写递归函数逐层处理。

1、定义函数 function object_to_array($obj) { if (is_object($obj)) $obj = (array) $obj; if (is_array($obj)) { $new = array(); foreach ($obj as $key => $val) $new[$key] = object_to_array($val); return $new; } else return $obj; }

2、传入任意深度嵌套的对象 $result = object_to_array($complexObj);

3、函数自动识别每个值类型,对子对象继续调用自身,确保最终结果不含任何对象实例

五、使用 Serializable 接口配合 json_encode/json_decode 组合

对于实现了 Serializable 接口的类,可通过序列化后再解析的方式间接获得数组结构,前提是类中 serialize 方法返回的是可被 json_decode 处理的数据格式。

1、在类中实现 serialize() 方法,返回一个关联数组或 JSON 兼容结构。

2、调用 $serialized = serialize($obj);

3、再通过 $arr = json_decode(json_encode(unserialize($serialized)), true);

4、该方式绕过对象属性可见性限制,但要求类主动支持且返回结构清晰

以上就是php的对象怎么转换成为数组_php对象转数组json_decode加true法【教程】的详细内容,更多请关注其它相关文章!


# 键值  # 北京网站建设电商  # 谷歌排名寻蓝颜SEO  # 酒店网站建设的基本流程  # 光电行业网站建设  # 河南优质网站优化方案  # 咸阳网站推广工作室  # 免费b站动漫推广网站有哪些  # 江西seo服务排行榜  # 免费网站推广找哪家  # 黑猫seo教程  # 类中  # 结构化  # php  # 可通过  # 适用于  # 遍历  # 键名  # 多字  # 转数  # 递归  # 递归函数  # ai  # json  # js 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: Lar*el如何生成PDF或Excel文件_Lar*el文档导出工具与使用教程  Linux如何排查内存不足OOME问题_LinuxOOM分析教程  中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】  解决 Vaadin 8 中大文件音频播放与定位时出现的 IOException  J*a递归快速排序中静态变量的状态管理与陷阱  SteamMachine定价或为699美元 大家想入手吗?  拼多多购物车商品数量无法修改如何处理 拼多多购物车操作优化方法  mc.js游戏直达 mc.js网页免下载版本秒进地址  抖音未来赚钱的新趋势 2025年值得关注的变现风口分析  微博网页版直接访问 微博网页版账号管理快速入口  MAC的“快捷指令”怎么同步到iPhone_MAC利用iCloud同步所有设备的自动化指令  台积电1.4nm工艺A14瞄准2028:10年来性能提升80%  Windows10怎么开启夜间模式 Windows10系统设置调整色温与亮度缓解夜间用眼疲劳【教程】  sublime如何处理大型CSV文件的列对齐_sublime高级表格编辑插件指南  J*aScript中正确使用querySelectorAll与复杂CSS选择器  探索高级语言到C/C++的转译路径:以Go为例及内存管理策略  Python实现多节点属性重叠度分析教程  印象笔记如何设离线包出差查阅_印象笔记设离线包出差查阅【离线阅读】  在Socket.IO连接中实现Access Token自动更新与动态重连  如何在离线环境中使用Composer_Composer离线安装依赖包的技巧与策略  三星ZFold5多任务卡顿_Samsung ZFold5流畅度提升  QQ邮箱官方网页版登录 QQ邮箱个人邮箱快速访问  BetterDiscord插件中安全更新用户简介的实践指南  在Qt QML中通过Python字典动态更新TextEdit内容的教程  c++如何实现一个简单的ECS框架_c++数据驱动设计与游戏开发  Python:递归比较文件夹内容并找出特定类型文件的差异  在Typer应用中优雅地处理和重组任意命令行参数  uc手机浏览器网页版入口 uc浏览器手机版便捷登录首页  零跑汽车11月交付量达70327台 实现连续9个月正增长  mysql通配符支持数字匹配吗_mysql通配符能否用于数字匹配的解析  J*aScript生成器_j*ascript异步迭代  地铁跑酷免费秒玩入口链接 地铁跑酷小游戏免费秒玩网站  格力空气能E5故障代码是什么情况_格力空气能E5代码解析与应对措施  Bilibili动漫最新防封地址发布-Bilibili动漫2025年最稳正版入口推荐  qq浏览器如何查看和导出已保存的密码 qq浏览器密码管理器数据备份教程  飞书妙记怎样用语音转文字速记_飞书妙记用语音转文字速记【速记方法】  《刺客信条4:黑旗》重制版新细节曝光:无缝加载 地图更细致!  微信网页版扫码登录入口 微信网页版二维码登录入口  理解J*aScript Promise的微任务队列与执行顺序  Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧  J*aScript中管理异步API调用:确保操作顺序与数据一致性  Spring Boot内嵌服务器与J*a EE全栈特性:选择与部署策略  如何在复杂的电商平台中优雅地管理共享资源并确保正确重定向,使用spryker-shop/resource-share-page模块助你一臂之力  蛙漫官网漫画入口地址_蛙漫在线畅读无广告弹窗  黑猫投诉统一入口官网 消费者权益保护投诉平台  C++如何实现线程池_C++11手动实现一个简单的固定大小线程池  苹果手机如何防止被恶意App追踪  Win11怎么设置鼠标主按键_Win11鼠标左右键功能互换  如何在Promise链中有效终止错误处理后的执行  Lar*el递归关系中排除子孙节点的策略 

搜索