【问题标题】:Laravel - Get the Last Element of @foreachLaravel - 获取 @foreach 的最后一个元素
【发布时间】:2016-11-26 23:48:33
【问题描述】:

基本上,我将 StaticPagesController 中的变量 employees 传递给 about.blade.php 当循环通过 @foreach 时,我希望代码知道它是否是最后一个元素,以便输出不带 逗号 的员工姓名。 这些都不行。

1.

@foreach($employees as $employee) 
    @if($employee == end($employees))
        {{ $employee->first_name }} {{ $employee->last_name }}
    @else
        {{ $employee->first_name }} {{ $employee->last_name }}, 
    @endif
@endforeach

enter code here

2.

@foreach($employees as $employee) 
    @if($employees->last())
        {{ $employee->first_name }} {{ $employee->last_name }}
    @else
        {{ $employee->first_name }} {{ $employee->last_name }}, 
    @endif
@endforeach

【问题讨论】:

    标签: php foreach laravel-5.2 blade


    【解决方案1】:

    从 Laravel 5.3 开始更容易了:你在所有 @foreach 中都有一个 $loop 变量:

    https://laravel.com/docs/5.3/blade#the-loop-variable

    @foreach($employees as $employee)
    
       @if ($loop->last)
          // This is the last iteration.
          {{ $employee->first_name }} {{ $employee->last_name }}
       @else
          {{ $employee->first_name }} {{ $employee->last_name }},  
       @endif
    
    @endforeach
    

    最短的选择可以是:

    @foreach($employees as $employee)
       {{ $employee->first_name }} {{ $employee->last_name }}{{ ($loop->last ? '' : ',') }}
    @endforeach
    

    注意 $loop->first 也存在。

    【讨论】:

      【解决方案2】:

      这是您可能想要的代码:

      @foreach($employees as $employee) 
          @if($employees->last() === $employee)
              {{ $employee->first_name }} {{ $employee->last_name }}
          @else
              {{ $employee->first_name }} {{ $employee->last_name }}, 
          @endif
      @endforeach
      

      所以我在这里将last() 员工与当前$employee 进行比较。当它到达最后一个$employee时,它将与last()相同。

      【讨论】:

        【解决方案3】:

        据我了解,您代码的逻辑是将每个元素的值与最后一个元素的值进行比较,以确定它是否是最后一个元素并避免尾随逗号。

        如果有 2 个人的详细信息完全相同,恰好一个是最后一个,您可能会呈现部分列表。

        我建议您使用 for 循环而不是 foreach 并比较元素索引而不是值。代码:-

        @for ($i = 0; $i < count($employees); $i++)
            @if ($i + 1 < count($employees))
                {{ $employees[$i]->first_name }} {{ $employees[$i]->last_name }},
            @else
                {{ $employees[$i]->first_name }} {{ $employees[$i]->last_name }}
            @endif
        @endfor
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-02-25
          • 2012-04-02
          • 2010-11-30
          • 1970-01-01
          • 1970-01-01
          • 2017-04-08
          • 1970-01-01
          相关资源
          最近更新 更多