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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:01:35