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

Laravel 6:如何在Blade模板中循环遍历并显示数组值

在Laravel 6 Blade中遍历含集合的数组并提取目标值

没问题,我来帮你搞定Laravel 6 Blade里这种嵌套遍历的需求!咱们一步步拆解,用实际代码示例来说明:

1. 先明确数据结构(控制器传递到视图的示例)

假设你从控制器传递给视图的数组叫$dataGroups,每个元素里包含一个结果集合,结构大概是这样:

// 控制器示例代码
$dataGroups = [
    [
        'category' => '产品分类A',
        'results' => Product::where('category_id', 1)->get() // 这是Eloquent查询返回的集合
    ],
    [
        'category' => '产品分类B',
        'results' => collect([
            ['id' => 5, 'product_name' => '手动工具'],
            ['id' => 6, 'product_name' => '电动工具']
        ]) // 也可能是手动创建的普通集合
    ]
];

return view('products.list', compact('dataGroups'));

2. Blade模板里的嵌套遍历写法

在Blade里,我们可以用@foreach先遍历外层数组,再针对每个元素里的集合做内层遍历,提取目标值:

<div class="product-wrapper">
    @foreach($dataGroups as $group)
        <div class="category-block">
            <h2>{{ $group['category'] }}</h2>
            
            <!-- 先判断集合是否为空,避免空遍历报错 -->
            @if($group['results']->isNotEmpty())
                <ul class="product-list">
                    @foreach($group['results'] as $item)
                        <!-- 注意:如果是Eloquent模型集合,用->属性名取值;普通数组集合用['键名'] -->
                        <li>
                            产品ID: {{ is_object($item) ? $item->id : $item['id'] }} 
                            | 产品名称: {{ is_object($item) ? $item->name : $item['product_name'] }}
                        </li>
                    @endforeach
                </ul>
            @else
                <p class="empty-tip">当前分类暂无产品数据</p>
            @endif
        </div>
    @endforeach
</div>

3. 实用细节提醒

  • 集合空值判断:一定要用->isNotEmpty()或->isEmpty()做判断,既避免报错,也能给用户友好的空状态提示。
  • 区分集合类型:如果是Eloquent模型返回的集合,元素是模型实例,用->属性名取值;如果是普通数组组成的集合,就用['键名']取值。
  • 简化模板逻辑:如果嵌套层级太多,建议在控制器里提前处理数据(比如把集合里的目标值先提取成简单数组),让模板代码更简洁易维护。

这样就能轻松遍历数组内的集合,精准提取并展示你需要的目标值啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 20:19:09