是 PHP 常见的一种类型错误。意思是:
你正在尝试用数组方式(例如
$var['key']或$var[0])去访问一个实际上是 字符串类型 的变量。
一、举个例子说明
在上面,$data 是一个字符串,而不是数组。
所以用 $data['key'] 访问下标时就会触发这个错误。
二、常见出现场景
1️⃣ 从 JSON 或数据库读取时未解码
2️⃣ 从数据库或接口返回的数据格式不符预期
3️⃣ ThinkPHP / Laravel 等框架中 $request->param()、input() 返回字符串
✅ 修复:
或
三、如何快速定位问题
在出错的行上加上调试:
确认它到底是字符串还是数组。
四、通用解决办法
| 问题原因 | 解决方法 |
|---|---|
| JSON 字符串未解码 | json_decode($str, true) |
| API 返回错误字符串 | 检查返回内容格式 |
| 框架输入未数组化 | 改为 input('param.') |
| 数据库字段是字符串 | 使用 unserialize() 或 json_decode() |
| 数组索引错误 | 确保 $var 真的是数组 |
五、示例修复对比
错误代码:
修复后:
发表评论 取消回复