个人技术分享

Blade 提供 @foreach、@while、@for 和 @forelse 等指令来与 PHP 循环配合使用。

您知道吗... 这些指令中有一个方便的 $loop 变量,它指示当前循环迭代?在本文中,我们将探索 $loop 和 loop 指令。😎

使用$loop比@foreach更深入

@foreach指令遍历数组和对象,循环数据并为每个项目呈现 HTML。非常简单:

@foreach($users as $user)
    <p>{{ $user->name }}</p>
@endforeach

但是,在@foreach循环内,您可以访问变量$loop 并提供如下信息

  • $loop->index:当前迭代索引(从 0 开始)。
  • $loop->iteration:当前迭代次数(从 1 开始)。
  • $loop->first:判断这是否是第一次迭代。
  • $loop->last:判断这是否是最后一次迭代。
  • $loop->count:循环中的项目总数。
  • $loop->remaining:循环中剩余的迭代次数。
  • $loop->even:这是否是循环中的偶次迭代。
  • $loop->odd:这是否是循环中的奇数迭代。
  • $loop->depth:当前循环的嵌套层数。
  • $loop->parent:在嵌套循环中,父级的循环变量。

非常有用,对吧?你可以这样使用它:

@foreach($users as $user)
    <p>{{ $user->name }}</p>
    @if ($loop->last)
        <p>This is the last user.</p>
    @endif
@endforeach

@forelse

@forelse指令类似于,@foreach但包含处理空数组或集合的条件。

@forelse($tasks as $task)
    <p>{{ $task->name }}</p>
@empty
    <p>No tasks found.</p>
@endforelse

除了前面提到的循环属性之外,$loop还提供了特定于的属性@forelse

  • $loop->empty:布尔值,指示循环是否为空。

@for 和 @while

  • @for指令执行一段代码,执行指定次数的迭代。
  • @while只要条件为真,指令就会执行代码块。
@for ($i = 0; $i < 5; $i++)
    <p>{{ $i }}</p>
@endfor

@while (true)
    <p>I'm looping forever.</p>
@endwhile