您的位置:首页 >Laravel API 返回数组错误:属性访问问题解析
发布于2026-02-12 阅读(0)
扫一扫,手机访问

当使用 Laravel 从 API(如 RAWG)获取数据时,若误将数组当作对象访问(如 `$result->name`),会触发 “Trying to get property 'name' of non-object” 错误;根本原因是 API 响应为关联数组而非 stdClass 对象,需统一使用数组语法访问。
在调用类似 RAWG 这类 RESTful API 时,第三方 SDK(如 \Rawg::load('games')->get())通常默认返回的是 关联数组(尤其是 JSON 解析后未强制转为对象),而非 PHP 对象。因此,直接使用对象箭头语法($result->name)会导致运行时错误 —— 因为 $result 实际是 array 类型,不支持 -> 访问。
正确做法是:
✅ 明确识别响应结构(可通过 dd($response) 或 var_dump($response) 调试);
✅ 确认数据位于 $response['results'](而非直接遍历 $response);
✅ 所有字段均使用数组下标语法($result['key']),嵌套结构同理。
以下是修正后的完整示例代码:
$response = \Rawg::load('games')
->setParams([
'page' => 1,
'page_size' => 40,
'ordering' => '-rating',
])
->get();
// 关键修正:遍历 $response['results'],且全部使用数组语法
if (isset($response['results']) && is_array($response['results'])) {
foreach ($response['results'] as $result) {
// 注意:ratings 和 platforms 均为数组,需校验索引存在性
$ratingTitle = !empty($result['ratings'][0]['title'])
? $result['ratings'][0]['title']
: null;
$platformName = !empty($result['platforms'][0]['platform']['name'])
? $result['platforms'][0]['platform']['name']
: null;
Games::insert([
'name' => $result['name'] ?? 'Unknown Game',
'ratings' => $ratingTitle,
'platforms' => $platformName,
]);
}
}⚠️ 重要注意事项:
总结:该错误本质是类型误判,解决核心在于「看清数据结构、用对访问语法、做好空值防护」。
上一篇:360搜索官网链接地址直达
下一篇:剑网大红包怎么领?快速获取攻略
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9