【问题标题】:laravel check last iteration of foreach loop while using if condition in the foreach looplaravel 在 foreach 循环中使用 if 条件时检查 foreach 循环的最后一次迭代
【发布时间】:2019-09-27 07:02:54
【问题描述】:

如果我在 foreach 中使用 @if,如何找到 foreach 循环中的最后一项,我想找到它,所以我想删除最后一项后的点,我希望这些点只显示在项目之间,例如: 你好 。帮助 。 我知道使用循环的方式-->最后,但它不起作用,因为@if条件显示不同的最后一项,这意味着如果我们有100个项目但是当我们使用它时它会显示让我们说项目1和42和63所以这里的最后一项是 63,但是当使用 loop->last 时会显示最后一项是 100

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

@foreach($cuisines as $cuisine)

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

@endforeach

【问题讨论】:

  • 需要你在循环前使用$end = end($cuisines)并在循环内匹配$end->cuisine_id == $cuisine->id
  • 没明白你的意思

标签: php laravel


【解决方案1】:

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

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

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

【讨论】:

  • 我知道这种方式,但它不起作用,因为@if 条件显示不同的最后一项,这意味着如果我们有 100 个项目,但当我们使用它时,它是否会显示项目 1 和 42 和 63所以这里的最后一项是 63,但是当使用 loop->last 时会显示最后一项是 100,你明白我的意思吗?
  • 将过滤移至控制器不是更好的主意吗?否则你的观点中就会有太多的逻辑。
【解决方案2】:

你可以使用 $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

【讨论】:

  • 我知道这种方式,但它不起作用,因为@if 条件显示不同的最后一项,这意味着如果我们有 100 个项目,但当我们使用它时,它是否会显示项目 1 和 42 和 63所以这里的最后一项是 63,但是当使用 loop->last 时会显示最后一项是 100,你明白我的意思吗?
  • 谢谢,但是如何打印结果?我尝试使用 foreach ($arr as newcouisine) 为 $arr 创建另一个循环,但结果相同
  • @AshMalek,您只需在要显示结果的位置编写 {{ $str }} 代码
猜你喜欢
  • 1970-01-01
  • 2023-03-28
  • 2019-04-24
  • 2011-11-20
  • 1970-01-01
  • 2011-01-17
  • 2023-04-06
  • 1970-01-01
  • 2023-03-11
相关资源
最近更新 更多