PHP中将对象转数组有五种方法:一、(array)强制转换,仅限公共属性;二、get_object_vars(),只返回public属性;三、json_encode/json_decode组合,可绕过访问控制但要求属性可JSON化;四、ReflectionObject反射,可获取所有属性但性能低;五、类中定义toArray()方法,最灵活可控。

如果您需要将 PHP 中的对象转换为数组,以便进行数据处理、序列化或与其他系统交互,则可能遇到对象属性不可直接访问或类型不匹配的问题。以下是实现该目标的多种方法:
一、使用 (array) 强制类型转换
这是最简洁的方式,适用于标准对象(非 StdClass 子类或具有魔术方法的自定义类),它会将对象的公共属性转为关联数组键值对,私有和受保护属性会被添加前缀修饰符。
1、声明一个包含公共属性的对象实例。
2、在变量前添加 (array) 进行强制类型转换。
立即学习“PHP免费学习笔记(深入)”;
3、注意:受保护属性会以 \0*\0property_name 形式出现,私有属性则为 \0ClassName\0property_name。
二、使用 get_object_vars() 函数
该函数仅返回对象的可访问(public)属性组成的关联数组,不包含私有或受保护属性,也不处理继承关系中的父类 public 属性(除非子类显式暴露)。
1、调用 get_object_vars($obj),传入目标对象变量。
2、确保对象处于当前作用域且具备可读性。
3、若对象实现了 __get() 魔术方法,此函数不会触发该方法,仅反射实际存在的 public 属性。
三、使用 JSON 编码与解码组合
通过先将对象 JSON 序列化再反序列化为数组,可绕过访问控制限制并获取所有可序列化的属性值,但要求对象属性可被 json_encode 处理(即不能含资源、闭包或循环引用)。
1、调用 json_encode($obj) 将对象转为 JSON 字符串。
标签: php js json 编码 access 作用域 键值对
还木有评论哦,快来抢沙发吧~