PHP中将对象转数组有五种方法:一、强制类型转换适用于stdClass;二、json_encode/json_decode支持嵌套;三、get_object_vars仅获取公共属性;四、反射递归处理私有/受保护属性;五、Laravel中用Collection::make()->toArray()。

如果您在PHP开发中接收到一个对象,但后续操作需要以数组形式处理,则必须将该对象转换为数组。以下是多种可行的转换方法:
一、使用强制类型转换(适用于标准对象)
对非私有属性的stdClass对象或简单公共属性对象,可直接使用(array)强制类型转换,该方式会将对象的公共属性及其值映射为关联数组键值对。
1、声明一个stdClass对象并赋值:
$obj = new stdClass();
$obj->name = "张三";
$obj->age = 25;
2、执行强制类型转换:
$arr = (array)$obj;
立即学习“PHP免费学习笔记(深入)”;
3、验证结果:
var_dump($arr); // 输出:array(2) { ["name"]=> string(6) "张三" ["age"]=> int(25) }
二、使用json_encode与json_decode组合(支持嵌套对象)
该方法先将对象序列化为JSON字符串,再反序列化为关联数组,能有效处理多层嵌套对象及部分不可见属性问题,但要求对象属性可被JSON编码。
1、准备待转换对象:
$obj = new stdClass();
$obj->user = new stdClass();
$obj->user->id = 1001;
2、执行双重转换:
$arr = json_decode(json_encode($obj), true);
3、确认输出为数组:
var_dump(is_array($arr)); // 输出:bool(true)
三、使用get_object_vars函数(仅限公共属性)
get_object_vars()函数返回对象中所有可访问的公共属性组成的关联数组,不包含私有、受保护属性以及动态添加的不可枚举属性。
1、定义一个含公共属性的类:
class Person { public $name = "李四"; public $city = "北京"; }
标签: php laravel js json 编码 access php开发 键值对
还木有评论哦,快来抢沙发吧~