You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

报错:Cannot use object of type stdClass as array 如何解决?

解决「Cannot use object of type stdClass as array」错误

嘿,这个错误我见过好多刚接触PHP JSON处理的开发者碰到,其实根源很简单——咱们一步步理清楚:

问题出在哪?

你写的这段代码:

$code = json_decode($src);
echo $code["items"];

json_decode() 默认情况下会把JSON字符串转换成stdClass对象(从你用var_dump看到的object(stdClass)#7也能确认这一点),但你却用了数组的方括号["items"]语法去访问它的属性,这就触发了那个致命错误。

先搞懂:什么是stdClass?

stdClass是PHP内置的一个“空架子”类,专门用来创建简单的对象实例。当json_decode不指定第二个参数时,JSON里的键值对会被映射成这个对象的属性——访问这些属性不能用数组的方括号,得用对象的->语法。

两种快速解决方法

方法1:用对象语法访问属性

如果你想继续用对象的方式处理,把代码改成这样就行:

$code = json_decode($src);
echo $code->items; // 用->访问对象属性

方法2:让json_decode返回关联数组

这是更灵活、也更符合很多人使用习惯的方式——给json_decode的第二个参数传true,它就会把JSON转换成关联数组,这样你就能用熟悉的数组方括号语法访问了:

$code = json_decode($src, true);
echo $code["items"]; // 正常使用数组语法

补充一句

你说搜索错误解决方法没找到,其实这个问题的核心就是忽略了json_decode的第二个参数——默认返回对象还是数组这个细节,确实容易被新手漏掉,相信不少人都踩过这个坑~

内容的提问来源于stack exchange,提问作者Dan B.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:43:01