如何用PHP/Laravel遍历多层JSON?Laravel Blade场景求助
问题分析与解决方案
我来帮你梳理下问题所在~你的JSON结构里exercises是数组类型,但你直接尝试访问$al->exercise->description——这里不仅拼写少了末尾的s,更关键的是数组不能直接通过->访问单个元素的属性,必须嵌套一层循环来遍历这个数组。
修正后的Blade代码示例
@foreach($exercisePlan as $al) @if(isset($al->exercises) && is_array($al->exercises)) @foreach($al->exercises as $exercise) <li>{{ $exercise->description }}</li> @endforeach @endif @endforeach
额外注意事项
如果你的exercises字段是从数据库中以JSON字符串形式存储的(而非已经解析好的对象/数组),还需要先把它转成可访问的格式:
- 方法一:在Laravel模型中配置自动转换,一劳永逸:
// 对应的数据模型文件,比如ExercisePlan.php protected $casts = [ 'exercises' => 'array', // 也可以选'object',根据你需要的类型来定 ];
配置后从数据库取数据时,exercises会自动被转换成数组或对象,直接用上面的Blade代码就能正常访问。
- 方法二:临时需求的话,可在Blade中手动解析:
@foreach($exercisePlan as $al) @php $exercises = json_decode($al->exercises); @endphp @if(isset($exercises) && is_array($exercises)) @foreach($exercises as $exercise) <li>{{ $exercise->description }}</li> @endforeach @endif @endforeach
内容的提问来源于stack exchange,提问作者d3t0x
相关产品推荐
相关产品推荐

