如何仅显示Laravel Blade模板中集合中第一个项目的内容

SoH*_*oHo 16 php laravel-5.1 laravel-blade

我在Blade模板中有一个@foreach循环,需要对集合中的第一个项目应用特殊格式.如何添加条件以检查这是否是第一项?

@foreach($items as $item)
    <h4>{{ $item->program_name }}</h4>
@endforeach`
Run Code Online (Sandbox Code Playgroud)

Sha*_*ews 57

Laravel 5.3提供了一个$loop变量in foreach循环.

@foreach ($users as $user)
    @if ($loop->first)
        This is the first iteration.
    @endif

    @if ($loop->last)
        This is the last iteration.
    @endif

    <p>This is user {{ $user->id }}</p>
@endforeach
Run Code Online (Sandbox Code Playgroud)

文档:https://laravel.com/docs/5.3/blade#the-loop-variable

  • 正是我想要的。谢谢你! (2认同)

Lia*_*ire 10

苏荷区,

最快的方法是将当前元素与数组中的第一个元素进行比较:

@foreach($items as $item)
    @if ($item == reset($items )) First Item: @endif
    <h4>{{ $item->program_name }}</h4>
@endforeach
Run Code Online (Sandbox Code Playgroud)

或者,如果它不是关联数组,您可以根据上面的答案检查索引值 - 但如果数组是关联的,那么这将不起作用.


Vic*_*tor 7

从 Laravel 7.25 开始,Blade 现在包含一个新的 @once 组件,因此您可以这样做:

@foreach($items as $item)
    @once
    <h4>{{ $item->program_name }}</h4>  // Displayed only once
    @endonce
    // ... rest of looped output
@endforeach
Run Code Online (Sandbox Code Playgroud)


Gum*_*aro 6

只取键值

@foreach($items as $index => $item)
    @if($index == 0)
        ...
    @endif
    <h4>{{ $item->program_name }}</h4>
@endforeach
Run Code Online (Sandbox Code Playgroud)

  • 如果第一个项目的索引不为零,这将失败。 (4认同)
  • 即使 ```$items``` 不是数组,这也会失败:)。 (2认同)

Alm*_*itt 5

Laravel 7. * 提供了一个first()辅助函数。

{{ $items->first()->program_name }}
Run Code Online (Sandbox Code Playgroud)

*请注意,我不确定这是什么时候引入的。因此,它可能不适用于早期版本。

它仅在此处文档中简要提及。