如何在Laravel的foreach循环中跳过第一项?

时间:2016-08-11 12:21:36

标签: php laravel-5.1 blade

我正在尝试使用基于存储在数据库中的内容的内容填充我的网页。但是,我想跳过第一项;我想从第二项开始循环。

我怎样才能做到这一点?

@foreach($aboutcontent as $about)
<div class="col-md-4 text-center">
   <div class="thumbnail">
     <img id="" class="img-responsive" src="images/{{ $about->aboutimg }}" alt="">
        <div class="caption">
            <h3>{{ $about->aboutname }}</h3>
            <p>{{ $about->aboutinfo }}</p>
        </div>
   </div>
</div>
@endforeach

6 个答案:

答案 0 :(得分:7)

从Laravel 5.4开始,无论何时在刀片文件中使用foreachfor,您现在都可以访问$loop variable。 $ loop变量提供了许多有用的属性和方法,其中一个在这里很有用,用于跳过第一次迭代。请参阅下面的示例,这是一种更清晰的方法,可以获得与其他旧答案相同的结果:

@foreach ($rows as $row)
    @if ($loop->first) @continue @endif
    {{ $row->name }}<br/>
@endforeach

答案 1 :(得分:5)

试试这个:

@foreach($aboutcontent as $key => $about)
@if($key > 0){ 
   <div class="col-md-4 text-center">
       <div class="thumbnail">
         <img id="" class="img-responsive" src="images/{{ $about->aboutimg }}" alt="">
            <div class="caption">
                <h3>{{ $about->aboutname }}</h3>
                <p>{{ $about->aboutinfo }}</p>
            </div>
       </div>
    </div>
@endif;
@endforeach

答案 2 :(得分:2)

假设$aboutcontents是数字数组,只需使用旧的for循环而不是新的foreach

// Notice you start at 1 and your first
// elem is 0 so... ta da... skipped
@for ($i = 1; $i < count($aboutcontents); $i++){
    $about = $aboutcontents[$i]; //This is the object

    //now use $about as you would
}

注意:我没有使用Larvel或刀片,但基于文档,这应该是可行的

答案 3 :(得分:1)

如果您想在刀片中执行此操作,则需要某种计数器:

<?php $count = 0;?>
@foreach
    @if($count>1)
        <div class="col-md-4 text-center">
           <div class="thumbnail">
             <img id="" class="img-responsive" src="images/{{ $about->aboutimg }}" alt="">
                <div class="caption">
                    <h3>{{ $about->aboutname }}</h3>
                    <p>{{ $about->aboutinfo }}</p>
                </div>
           </div>
        </div>
    @endif
    $count++
@endforeach

编辑:

我更喜欢Mark Ba​​ker在评论中提供的答案

@foreach(array_slice($aboutcontent, 1) as $about)
<div class="col-md-4 text-center">
   <div class="thumbnail">
     <img id="" class="img-responsive" src="images/{{ $about->aboutimg }}" alt="">
        <div class="caption">
            <h3>{{ $about->aboutname }}</h3>
            <p>{{ $about->aboutinfo }}</p>
        </div>
   </div>
</div>
@endforeach

答案 4 :(得分:1)

有两种方法可以做到这一点: 1-如果您的$ key是数字,则可以使用:

for link in links:
    helper("wget "+link)

2-如果$ key不是数字 使用@ loop-> first作为条件

答案 5 :(得分:0)

或者,您可以在迭代之前从数组中删除第一个元素:

@php
    array_shift($aboutcontent);
@endphp
@foreach($aboutcontent as $about)
<div class="col-md-4 text-center">
    <div class="thumbnail">
        <img id="" class="img-responsive" src="images/{{ $about->aboutimg }}" alt="">
        <div class="caption">
            <h3>{{ $about->aboutname }}</h3>
            <p>{{ $about->aboutinfo }}</p>
        </div>
   </div>
</div>
@endforeach

优点是您不需要任何条件来验证您是否在第一次迭代中。缺点是您可能需要同一视图中的第一个元素,但我们不知道您的示例。

注意在将数据传递给视图之前,从数组中删除第一个元素可能更有意义。

供参考,见: