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

蓮花仙者
发布: 2025-12-09 08:38:02
原创
242人浏览过
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);

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

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法【教程】的详细内容,更多请关注php中文网其它相关文章!

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

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

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号