php怎么把对象转换成数组对象_php对象转数组json_decode加true法【技巧】

星夢妙者
发布: 2025-12-14 23:57:09
原创
833人浏览过
PHP中将对象转数组有四种方法:一、json_encode与json_decode(true)组合;二、强制类型转换(array);三、get_object_vars提取public属性;四、递归处理嵌套对象。

php怎么把对象转换成数组对象_php对象转数组json_decode加true法【技巧】

如果您在PHP开发中需要将对象转换为数组,以便于数据处理或序列化操作,则可能遇到对象属性不可直接访问或JSON解析后仍为对象的问题。以下是解决此问题的步骤:

一、使用json_encode与json_decode组合转换

该方法先将对象序列化为JSON字符串,再通过json_decode的第二个参数设置为true,强制返回关联数组而非对象。这是最常用且兼容性良好的方式。

1、调用json_encode函数,传入原始对象,获取JSON格式字符串。

2、将上一步得到的JSON字符串作为参数传入json_decode函数。

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

3、在json_decode函数中,第二个参数明确传入true,确保返回结果为索引/关联数组而非stdClass对象。

二、使用类型转换(强制数组转换)

PHP支持对部分对象进行强制类型转换为数组,但仅适用于未定义__toString或__set_state等魔术方法的简单对象,且要求所有属性为public。

1、在对象变量前添加(array)类型声明。

2、执行转换后,对象的public属性会成为数组的键值对,private和protected属性则以特殊命名格式(如“\0类名\0属性名”)存在。

3、若需清理私有属性键名,可配合array_keys与preg_replace对键进行正则过滤。

Pinokio
Pinokio

Pinokio是一款开源的AI浏览器,可以安装运行各种AI模型和应用

Pinokio 232
查看详情 Pinokio

三、使用get_object_vars函数提取公有属性

get_object_vars函数仅返回对象中可访问的public属性组成的关联数组,不包含private或protected成员,适合对属性可见性有明确控制的场景。

1、调用get_object_vars函数,传入目标对象实例。

2、函数返回一个以属性名为键、属性值为值的关联数组。

3、若对象继承自父类且需包含父类public属性,该函数仍可正常获取,无需额外操作。

四、实现递归转换以支持嵌套对象

当对象内部含有其他对象(如属性值本身是对象或对象数组)时,前述方法可能仅转换顶层结构。此时需编写递归函数逐层处理。

1、定义一个接收任意类型变量的函数,判断是否为object。

2、若为object,则先用get_object_vars获取其public属性,再对每个属性值递归调用自身。

3、若属性值为数组,则遍历数组元素,对其中每个元素再次递归判断并转换。

4、所有非object非array类型保持原值不变,直接赋值到结果数组对应位置。

以上就是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号