laravel在foreach循环中使用if条件时检查foreach循环的最后一次迭代

时间:2019-09-27 07:02:54

标签: php laravel

如果我在foreach中使用@if,如何在foreach循环中找到最后一个项目,我想找到它,所以我想删除最后一个项目之后的点,我希望这些点仅在类似项目之间显示: 你好 。救命 。 我知道使用loop-> last的方式,但是由于@if条件显示不同的last项,所以它不起作用,这意味着如果我们有100项,但是当我们使用if时它会显示项1、42和63,所以最后一项是63,但是当使用loop-> last将显示最后一项是100

在这里,但我所拥有的是这样的:这里。

@foreach($cuisines as $cuisine)

    @if(($cuisine->id)==($scuitem->cuisine_id))
        {{ $cuisine->title }} •
    @endif 

@endforeach

2 个答案:

答案 0 :(得分:2)

Laravel实际上有the $loop variable,其中包含有关当前迭代的信息。

例如$loop->last是一个布尔值,指示我们是否在最后一次迭代中。

@foreach($cuisines as $cuisine)
    @if(($cuisine->id)==($scuitem->cuisine_id))
        {{ $cuisine->title }}{{ $loop->last ? '' : ' •' }}
    @endif
@endforeach

答案 1 :(得分:1)

您可以使用$ loop-> last:

@foreach($cuisines as $cuisine)
       @if(($cuisine->id)==($scuitem->cuisine_id))
          {{ $cuisine->title }} 
         @if(!($loop->last))
            •
         @endif
       @endif 
@endforeach

已编辑:

现在在Controller中使用此代码并传递$str进行查看

$arr = [];
foreach($cuisines as $cuisine){
  if(($cuisine->id)==($scuitem->cuisine_id)){
    $arr[] = $cuisine->title;
  }
}
$str = implode(' • ',$arr);

或者如果您要在视图中编码而不是按以下方式使用:

@php
  $arr = [];
  foreach($cuisines as $cuisine){
    if(($cuisine->id)==($scuitem->cuisine_id)){
      $arr[] = $cuisine->title;
    }
  }
  $str = implode(' • ',$arr);
@endphp