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

Laravel 5遍历JSON格式键名集合时获取属性报错求助

解决Laravel 5中遍历JSON格式键时的"Trying to get property of non-object"错误

嘿,这个问题我之前踩过坑!核心原因很直白:你的$trendings集合里的键是纯JSON格式的字符串,不是已经解析好的对象或数组。所以你直接写$key->id的时候,PHP会报错——毕竟字符串哪来的id属性呢?

最快的临时解决方法:遍历现场解码

在Blade视图里,每次遍历的时候先把JSON键解码成对象/数组,再访问属性就行:

解码成对象访问

@foreach($trendings as $key => $value)
    {{ json_decode($key)->id }}
@endforeach

解码成数组访问(如果你更习惯数组语法)

@foreach($trendings as $key => $value)
    {{ json_decode($key, true)['id'] }}
@endforeach

更优雅的方案:后端提前处理集合

如果这个集合在视图里要反复用,或者你想让视图逻辑更干净,建议在控制器里先把整个集合处理好,避免在视图里堆逻辑:

// 控制器代码示例
$processedTrendings = collect();

foreach($trendings as $jsonKey => $count) {
    // 把JSON键解码成对象
    $item = json_decode($jsonKey);
    // 把原来的数值也绑定到对象上
    $item->view_count = $count;
    // 加入新集合
    $processedTrendings->push($item);
}

// 把处理好的集合传给视图
return view('your-page', compact('processedTrendings'));

之后在视图里就能轻松遍历了:

@foreach($processedTrendings as $item)
    ID: {{ $item->id }} | 标题: {{ $item->title }} | 访问量: {{ $item->view_count }}
@endforeach

这样不仅视图代码更清爽,还能避免重复调用json_decode带来的不必要性能消耗。

内容的提问来源于stack exchange,提问作者Crazy Coders

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:28:17