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

如果需要将 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 属性的对象,且键名前会附加类名与不可见字符,格式为 “