2015-11-25 10 views

答えて

5

ソーホー、

キーの値を取る:

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

かそれ以外の場合は、連想配列でない場合は、上記の答えに従ってインデックス値を確認できますが、それは配列が結合的である場合は機能しません。

+0

あなたと@ gumma-mocciaroの両方のソリューションが私のケースで動作します。これは短いです。 – SoHo

+0

私にとって完璧に働いた! – Brnovich

2

ただ、最も簡単な方法は、配列の最初の要素で現在の要素を比較することである

@foreach($items as $index => $item) 
    @if($index == 0) 
     ... 
    @endif 
    <h4>{{ $item->program_name }}</h4> 
@endforeach 
14

Laravel 5.3は、foreachループ内で変数$loopを使用可能にします。

@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 

ドキュメント:https://laravel.com/docs/5.3/blade#the-loop-variable

0

リアムウィルトシャー州の答えとの主要な問題は、パフォーマンスが理由です:

  1. リセット($アイテムあなたがすることができるループ変数で

    ポインタを巻き戻し$ itemsコレクションを何度も繰り返しますそれぞれのループで...いつも同じ結果で。

  2. 両方$アイテムリセットの結果($アイテム)はオブジェクトなので、$アイテム==リセット($アイテム)は、その属性の完全な比較を必要とする...多くのプロセッサ時間を要求します。あなたは特別なフォーマットを適用する場合

    @foreach($items as $item) 
        @if ($loop->first) First Item: @endif 
        <h4>{{ $item->program_name }}</h4> 
    @endforeach 
    

    : -

それを行うには、より効率的かつエレガントな方法シャノン​​など S-を提案するには、ブレードの$ループ変数を使用することです最初の要素には、次のような操作を行うこともできます(三項条件演算子?:):

@foreach($items as $item) 
    <h4 {!! $loop->first ? 'class="special"': '' !!}>{{ $item->program_name }}</h4> 
@endforeach 

特別文字列の前後に二重引用符のHTMLコード化を避けるために、代わりに{{}}表記の{!!!!}タグの使用。

よろしくお願いいたします。

関連する問題