php 模板中foreach,在 Laravel 模板 foreach 循环中使用 $loop 魔术方法

f3608389b5ced6513f49a52ff0177bea.png

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)

Our first element of the array

@endif

{{ $loop->iteration . '/' . $loop->count }}

@if($loop->last)

Our last element of the array

@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 属性。

@foreach($items as $item => $value)

{{ $item }} == {{ $loop->iteration }}

@foreach($value as $item_second => $value_second)

{{ $item_second }} == {{ $loop->parent->iteration }}.{{ $loop->iteration }}

@foreach($value_second as $value_third)

{{ $value_third }} == {{ $loop->parent->parent->iteration }}.

{{ $loop->parent->iteration }}.{{ $loop->iteration }}

@endforeach

@endforeach

@endforeach

以上代码可能看起来有点复杂,但是我们仅仅只是用 parent 的 iteration 来作为列子,下面是上面代码的输出:

dd82f02a19e557287f8226e7bda4784c.png

希望你能在现有项目中使用 $loop 变量。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接

我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值