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 于 7年前 加精
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 6
Summer

很详细,赞一个

7年前 评论

有用。 再也不需要自己定义一个index做索引了。

7年前 评论

例子很全 :+1:

7年前 评论

wow,可以节省很多代码

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!