php把对象转成数组_php对象数组转换操作技巧【教程】

admin 百科 14
PHP对象转数组有五种方法:一、(array)强制转换,保留私有/受保护属性前缀;二、get_object_vars()仅提取public属性;三、json_encode/json_decode组合,丢失类型但处理嵌套;四、递归函数统一降级;五、自定义toArray()方法最可控。

php把对象转成数组_php对象数组转换操作技巧【教程】-第1张图片-佛山资讯网

如果您需要将 PHP 中的对象转换为数组,以便进行数据处理、序列化或与数组操作函数兼容,则需根据对象类型选择合适的方法。以下是多种实现方式:

一、使用类型转换强制转为数组

对标准类(stdClass)实例或未重载数组访问的普通对象,可直接使用 (array) 强制类型转换。该操作会将对象的公共属性转为关联数组键值对,私有和受保护属性键名将被添加特定前缀修饰。

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

2、使用 $arr = (array) $obj; 将对象赋值给新变量。

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

3、访问 $arr['property_name'] 获取对应属性值。

4、注意:受保护属性在转换后键名为 "\0*\0property_name",私有属性为 "\0ClassName\0property_name",需按此格式读取。

二、使用 get_object_vars() 函数

该函数仅返回对象中所有可访问(public)属性组成的关联数组,不包含私有或受保护成员,也不触发 __get 魔术方法,适用于快速提取公开字段。

1、确保目标对象已实例化且至少含有 public 属性。

2、调用 $arr = get_object_vars($obj); 获取数组结果。

3、检查返回值是否为 array 类型,空对象将返回空数组。

4、注意:若对象是 stdClass 实例且动态添加了属性,该函数仍可完整捕获;但对实现了 ArrayAccess 或 __get 的对象,不会调用魔术方法,仅返回实际存在的 public 属性

三、使用 JSON 编码解码组合法

通过 json_encode() 将对象转为 JSON 字符串,再用 json_decode($json, true) 强制解析为关联数组。该方法能穿透部分嵌套对象,且自动忽略不可序列化的资源或闭包。

1、确认对象所有属性均可被 JSON 序列化(不包含 resource、Closure 等)。

标签: php js json 编码 access 递归函数 键值对

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~