Laravel5.3 中新的循环变量 $loop
Laravel 5.3 发布临近,大体构建已经完成,文档整理也已经发布,一些新特性还待研究,柿子先赶软的捏 :smile:,先讲一个简单的特性,后面陆续会在我的博客上面更新~
在Laravel5.3中@foreach
循环和原生PHP的函数一样,$loop
循环变量是一个stdClass
对象提供关于你目前在循环中的元信息。看一看它所公开的属性:
- $loop->index: 当前循环迭代的索引(从0开始)
- $loop->iteration: 当前的循环迭代(从1开始)
- $loop->remaining: 剩下的迭代数量
- $loop->count: 循环中的数据总数
- $loop->first: 是否这是循环中的第一条数据,返回Boolean值
- $loop->last: 是否这是循环中的最后一条数据,返回Boolean值
- $loop->depth: 当前循环的嵌套级别
- $loop->parent: 当在嵌套循环中,父的循环变量
通过上面属性的介绍,用Laravel5.3简单的例子展示一下:
- HomeController
public function index()
{
$users = factory('App\User',10)->make();
$pages = collect([
['name' => 'page1','children' => []],
['name' => 'page2','children' => ['name' => 'page6']],
['name' => 'page3','children' => []],
['name' => 'page4','children' => ['name' => 'page7']],
['name' => 'page5','children' => []],
]);
return view('home')->with(compact('users','pages'));
}
- view(home.blade.php)
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">Dashboard</div>
<div class="panel-body">
<ul>
@foreach ($users as $user)
@if($loop->first || $loop->last)
<li>
{{ $loop->index }}: {{ $user->name }}---{{$user->email}}
</li>
@else
<li>
剩下{{$loop->remaining}}个用户没有输出,当前迭代:{{$loop->iteration}},总共{{$loop->count}}个用户== {{ $loop->index }}: {{ $user->name }}---{{$user->email}}
</li>
@endif
@endforeach
</ul>
<hr>
<ul>
@foreach ($pages as $page)
<li>
当前index:{{ $loop->index }}: {{ $page['name'] }},当前level:{{$loop->depth}}
@if($page['children'])
<ul>
@foreach($page['children'] as $child)
<li>
父级index:{{$loop->parent->index}},当前index:{{$loop->index}}:{{$child}},当前level:{{$loop->depth}}
</li>
@endforeach
</ul>
@endif
</li>
@endforeach
</ul>
</div>
</div>
</div>
</div>
</div>
@endsection
界面展示:
That's it!
本帖已被设为精华帖!
本帖由 Summer
于 8年前 加精
很详细,赞一个
有用。 再也不需要自己定义一个index做索引了。
例子很全 :+1:
@jeffyer 谢谢~
wow,可以节省很多代码
信息蛮全的 :+1: