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
相关产品推荐
相关产品推荐

