Laravel如何从嵌套数组二级结构获取指定年份的最后3条任务
解决方法
方法一:直接在Blade模板中过滤处理
修改现有代码,先筛选出2022年的任务块,再对该年份的任务数组取最后3条。array_slice传入负数起始索引时,会从数组末尾开始计数:
@foreach($sections['years_tasks_section_grid'] as $yearBlock) {{-- 筛选2022年的任务组 --}} @if($yearBlock['year'] == 2022) {{-- 取tasks_grid的最后3条任务,-3表示从倒数第3个元素开始取到末尾 --}} @foreach(array_slice($yearBlock['tasks_grid'], -3) as $task) <div class="col-md-4 col-xl-2 d-flex align-items-center justify-content-center justify-content-md-start mb-7 mb-xl-0 px-0"> // 任务内容渲染代码 </div> @endforeach @endif @endforeach
方法二:控制器预处理数据(推荐)
遵循Laravel MVC规范,把数据处理逻辑放在控制器中,视图仅负责渲染:
// 控制器代码 $year2022Tasks = collect($sections['years_tasks_section_grid']) ->firstWhere('year', 2022) // 定位2022年的任务块 ->get('tasks_grid', []); // 获取任务数组,默认空数组避免报错 $lastThreeTasks = array_slice($year2022Tasks, -3); // 提取最后3条任务 return view('你的视图名称', compact('lastThreeTasks'));
对应Blade模板简化为:
@foreach($lastThreeTasks as $task) <div class="col-md-4 col-xl-2 d-flex align-items-center justify-content-center justify-content-md-start mb-7 mb-xl-0 px-0"> // 任务内容渲染代码 </div> @endforeach
适配特殊数组结构
如果你的年份存储在数组索引位(而非关联键year),把判断条件改为@if($yearBlock[0] == 2022),控制器中对应调整为->firstWhere(0, 2022)即可。
内容的提问来源于stack exchange,提问作者Epi94
相关产品推荐
相关产品推荐

