在 Laravel 模板 foreach 循环中使用 $loop 魔术方法
Laravel 视图所拥有的 foreach 指令是与 PHP 中使用的 foreach 方法有着同样的用法。 @foreach
比起常规的 foreach 更加强大,因为他在每一个 $foreach
循环中内置了 $loop
变量。
$loop
变量是一个 stdClass
对象,并且提供了一系列当前循环的信息。 $loop
变量包含八个十分有用的属性。
$loop->index
返回以 0 开始的脚标值,0 表示是第一次循环$loop->iteration
返回以 1 开始的循环次数; 1 表示是第一次循环$loop->remaining
剩余的循环次数; 如果总共循环次数是 10,并且当前循环是 3,那么他将会返回 7$loop->count
返回循环的总次数$loop->first
判断是否为第一次循环,如果是则返回 true,否则返回 false$loop->last
判断是否为最后一次循环,如果是则返回 true,否则返回 false$loop->depth
返回当前循环的嵌套深度,如果是双层循环则返回 2 ,再多一层就会返回 3$loop->parent
如果当前循环是嵌套在其他循环中的,那么parent
将会返回父级循环的loop
变量。如果当前是顶级循环,那么将会返回null
它很容易理解以及使用,所以你可以在视图文件中这样做:
@foreach($items as $item)
@if($loop->first)
<p>Our first element of the array</p>
@endif
<p>{{ $loop->iteration . '/' . $loop->count }}</p>
@if($loop->last)
<p>Our last element of the array</p>
@endif
@endforeach
当你再循环中,你会得到一个 $loop
变量,你可以使用 depth
属性来得到当前的循环深度。当然,你可以使用 parent
属性来获取父级循环的 $loop
值。如果你循环很深,你可以再次使用链式调用 parent
属性获取上上层的 $loop
值。你可以看以下代码,拥有三层深度的数组。
我们先在控制器中定义如下数组并传递到视图文件。
$items = [
'1' => [
'1.1' => [
'1.1.1', '1.1.2'
],
'1.2' => [
'1.2.1', '1.2.2'
]
],
'2' => [
'2.1' => [
'2.1.1', '2.1.2'
],
'2.2' => [
'2.2.1', '2.2.2'
]
]
];
现在我们在循环中来使用 parent
属性。以下代码主要演示在嵌套循环中使用 parent
属性。
<ul>
@foreach($items as $item => $value)
<li>{{ $item }} == {{ $loop->iteration }}
<ul>
@foreach($value as $item_second => $value_second)
<li>{{ $item_second }} == {{ $loop->parent->iteration }}.{{ $loop->iteration }}
<ul>
@foreach($value_second as $value_third)
<li>{{ $value_third }} == {{ $loop->parent->parent->iteration }}.
{{ $loop->parent->iteration }}.{{ $loop->iteration }}
</li>
@endforeach
</ul>
</li>
@endforeach
</ul>
</li>
@endforeach
</ul>
以上代码可能看起来有点复杂,但是我们仅仅只是用 parent
的 iteration
来作为列子,下面是上面代码的输出:
希望你能在现有项目中使用 $loop
变量。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。