推荐使用(array)强制类型转换,因其最快最简且能完整保留所有属性及原始数据类型;而json_encode/json_decode会丢失私有/受保护属性、改变数据类型且性能差。

直接用 (array) 强制类型转换,最简单、最快、也最常用。
为什么推荐 (array) 而不是 json_decode/json_encode
json_encode + json_decode 是常见误区:它会丢掉对象的私有/受保护属性(因为 JSON 只序列化公有成员),还会把 null 变成 null、数字变字符串、丢失原始类型精度,且性能明显更差。
(array) 是 PHP 原生行为,能完整保留所有属性(包括私有和受保护),保持原有数据类型,不经过序列化/反序列化开销。
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
注意 stdClass 的结构特点
stdClass 对象本质是“纯容器”,没有方法、没有魔术逻辑,它的属性全是公有的——所以 (array) 转换后得到的就是一个标准关联数组,键名对应属性名,值对应属性值。
例如:
→ $obj = new stdClass();$obj->name = "Alice";
$obj->age = 30;
$arr = (array) $obj;
// 结果:['name' => 'Alice', 'age' => 30]
其他方式基本不用
- get_object_vars():只返回公有属性,对 stdClass 来说效果和 (array) 一样,但多一次函数调用,没必要绕路
- foreach + 手动赋值:代码冗长,无实际优势
- serialize/unserialize:完全不相关,属于持久化场景
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










