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

hrirmatl  于 2023-06-04  发布在  PHP
关注(0)|答案(8)|浏览(297)

我正试图根据存储在数据库中的内容来填充我的网页。不过,我想跳过第一项;我想从第二项开始循环。
我如何才能做到这一点?

@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
qyzbxkaa

qyzbxkaa1#

从Laravel 5.4开始,每当你在blade文件中使用foreachfor时,你现在可以访问一个$loop变量。$loop变量提供了许多有用的属性和方法,其中一个在这里很有用,可以跳过第一次迭代。请参阅下面的示例,这是一种更简洁的方法,可以实现与其他较旧的答案相同的结果:

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

bbmckpt72#

试试这个:

@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
yqlxgs2m

yqlxgs2m3#

假设$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或刀片,但根据文档,这应该是可行的 *
kknvjkwl

kknvjkwl4#

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

@foreach($aboutcontent as $key => $about)
 @if($key == 0)
  @continue
 @endif
 code
@endforeach

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

jckbn6z7

jckbn6z75#

如果你想在blade中做到这一点,你需要某种计数器:

<?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

编辑:
我更喜欢马克·贝克在评论中提供的答案

@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
yzuktlbb

yzuktlbb6#

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

@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

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

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

有关参考,请参见:

zbwhf8kr

zbwhf8kr7#

试试这个

@foreach($aboutcontent->slice(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
klh5stk1

klh5stk18#

从Laravel 5.3开始,你可以使用@continue($loop->first)

@foreach($aboutcontent as $about)
@continue($loop->first)

...

@endforeach

相关问题