全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

php把对象转化为数组_php类型转换操作技巧解析【教程】

PHP中将对象转数组有五种方法:一是强制类型转换(array),保留所有属性但私有/受保护属性键名带前缀;二是get_object_vars(),仅返回public属性;三是JSON编码解码,可绕过可见性限制但要求值可序列化;四是自定义__toArray()方法,灵活性最高;五是反射API,可获取全部属性值。

一、使用强制类型转换

PHP 支持通过 (array) 强制类型转换将对象转换为数组,该操作会将对象的公共属性(public)作为键值对导入数组,私有(private)和受保护(protected)属性会被添加前缀修饰符,影响键名结构。

1、定义一个包含 public、protected 和 private 属性的类实例。

2、在需要转换的位置,使用 (array)$obj 语法执行转换。

3、注意:转换后 protected 属性键名为 \0*\0property_name,private 属性键名为 \0Classname\0property_name,需正则或字符串处理方可统一访问。

二、使用 get_object_vars() 函数

get_object_vars() 仅返回对象中可访问的 public 属性组成的关联数组,不包含 protected 或 private 成员,适合明确只需公开字段的场景,且不依赖属性可见性修饰符干扰键名。

1、确保目标对象实例化完成且至少存在一个 public 属性。

2、调用 get_object_vars($obj),传入对象变量。

3、函数返回结果为纯关联数组,键为属性名,值为对应当前值,无额外命名空间前缀。

三、通过 JSON 编码与解码中转

利用 json_encode() 将对象序列化为 JSON 字符串,再用 json_decode($json, true) 强制解析为关联数组,可绕过可见性限制并扁平化嵌套对象,但要求所有属性值均可 JSON 序列化。

1、确认对象中不含资源(resource)、闭包(Closure)或循环引用,否则 json_encode 将失败或返回 false。

2、执行 $arr = json_decode(json_encode($obj), true)

3、该方式会丢失原始属性的可见性标识,所有键均为纯字符串,且 DateTime 等对象将转为 ISO8601 字符串形式。

四、实现 __toArray() 自定义方法

在类内部定义显式的 __toArray() 魔术方法或普通公有方法,由开发者控制哪些属性参与转换、是否递归处理子对象、是否格式化值,提供最高灵活性和可维护性。

1、在类中声明 public function __toArray() { ... }。

2、方法体内手动构造数组,例如 return ['id' => $this->id, 'name' => $this->name]

3、支持对 DateTime、其他对象等调用各自 __toArray() 或 format() 方法,实现深度可控转换。

五、使用反射 API 提取全部属性

借助 ReflectionClass 可突破访问控制,获取 public、protected、private 所有属性的名称与值,并按需构造数组,适用于需完整状态导出且不能修改原类定义的场景。

1、实例化 $ref = new ReflectionClass($obj)

2、调用 $props = $ref->getProperties() 获取全部属性反射对象列表。

3、遍历 $props,对每个属性调用 $prop->setAccessible(true); $arr[$prop->getName()] = $prop->getValue($obj)


# php  # js  # json  # 编码  # access  # 键值对  # Array  # Resource  # 关联数组  # 命名空间  # format  # 字符串  # 强制类型转换  # 递归  # 循环  # public  # private  # protected  # 闭包  # 类型转换  # function  # 对象  # this  # 键名  # 见性  # 自定义  # 序列化  # 修饰符  # 一是  # 遍历  # 只需  # 均为 


相关文章: 如何在景安云服务器上绑定域名并配置虚拟主机?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  如何通过服务器快速搭建网站?完整步骤解析  建站之星CMS建站配置指南:模板选择与SEO优化技巧  大学网站设计制作软件有哪些,如何将网站制作成自己app?  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  建站与域名管理如何高效结合?  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  外贸公司网站制作哪家好,maersk船公司官网?  在线教育网站制作平台,山西立德教育官网?  网站制作的步骤包括,正确网址格式怎么写?  网站制作新手教程,新手建设一个网站需要注意些什么?  如何通过可视化优化提升建站效果?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  如何在阿里云通过域名搭建网站?  如何通过.red域名打造高辨识度品牌网站?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  制作农业网站的软件,比较好的农业网站推荐一下?  建站之星代理费用多少?最新价格详情介绍  如何自定义建站之星模板颜色并下载新样式?  宝塔建站无法访问?如何排查配置与端口问题?  如何快速配置高效服务器建站软件?  如何快速查询网址的建站时间与历史轨迹?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  定制建站方案优化指南:企业官网开发与建站费用解析  如何在Golang中指定模块版本_使用go.mod控制版本号  广州美橙建站如何快速搭建多端合一网站?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  建站之星好吗?新手能否轻松上手建站?  ,怎么在广州志愿者网站注册?  如何快速重置建站主机并恢复默认配置?  寿县云建站:智能SEO优化与多行业模板快速上线指南  盘锦网站制作公司,盘锦大洼有多少5G网站?  建站主机SSH密钥生成步骤及常见问题解答?  XML的“混合内容”是什么 怎么用DTD或XSD定义  建站之家VIP精选网站模板与SEO优化教程整合指南  如何在局域网内绑定自建网站域名?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  如何用VPS主机快速搭建个人网站?  Python路径拼接规范_跨平台处理说明【指导】  建站主机CVM配置优化、SEO策略与性能提升指南  专业网站建设制作报价,网页设计制作要考什么证?  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  如何快速搭建自助建站会员专属系统?  如何高效生成建站之星成品网站源码?  网站制作话术技巧,网站推广做的好怎么话术? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。