How to skip first item in a foreach loop in Laravel?
我正在尝试根据存储在数据库中的内容在我的网页中填充内容。但是,我想跳过第一个项目;我想从第二个项目开始循环。
我怎样才能做到这一点?
1 2 3 4 5 6 7 8 9 10 11 12 13 | @foreach($aboutcontent as $about) <img id="" class="img-responsive" src="images/{{ $about->aboutimg }}" alt=""> {{ $about->aboutname }} <p> {{ $about->aboutinfo }} </p> @endforeach |
从laravel 5.4开始,无论何时在刀片文件中使用
1 2 3 4 | @foreach ($rows as $row) @if ($loop->first) @continue @endif {{ $row->name }}<br/> @endforeach |
试试这个:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @foreach($aboutcontent as $key => $about) @if($key > 0){ <img id="" class="img-responsive" src="images/{{ $about->aboutimg }}" alt=""> {{ $about->aboutname }} <p> {{ $about->aboutinfo }} </p> @endif; @endforeach |
假设
1 2 3 4 5 6 7 | // 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 } |
。
注:我没有使用幼虫或刀片,但根据文件,这应该是可行的。
如果你想在刀刃上这样做,你需要某种计数器:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php $count = 0;?> @foreach @if($count>1) <img id="" class="img-responsive" src="images/{{ $about->aboutimg }}" alt=""> {{ $about->aboutname }} <p> {{ $about->aboutinfo }} </p> @endif $count++ @endforeach |
编辑:
我更喜欢马克·贝克在评论中给出的答案。
1 2 3 4 5 6 7 8 9 10 11 12 13 | @foreach(array_slice($aboutcontent, 1) as $about) <img id="" class="img-responsive" src="images/{{ $about->aboutimg }}" alt=""> {{ $about->aboutname }} <p> {{ $about->aboutinfo }} </p> @endforeach |
号
或者,您也可以在迭代之前从数组中移除第一个元素:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | @php array_shift($aboutcontent); @endphp @foreach($aboutcontent as $about) <img id="" class="img-responsive" src="images/{{ $about->aboutimg }}" alt=""> {{ $about->aboutname }} <p> {{ $about->aboutinfo }} </p> @endforeach |
。
优点是您不需要任何条件来验证在第一次迭代中您不是。缺点是,您可能需要同一视图中的第一个元素,但从您的示例中我们不知道。
注意,在将数据传递给视图之前,从数组中删除第一个元素可能更有意义。
有关参考,请参见:
- http://php.net/manual/en/function.array-shift.php
- https://laravel.com/docs/5.4/blade_php