在循环Laravel PHP中捕获先前迭代的值

时间:2017-02-07 15:12:01

标签: php laravel laravel-5.2 laravel-5.3

我有一个带有这个变量的foreach迭代:

$cart = Cart {#167 ▼

  +lines: array:2 [▼
    0 => CartLine {#168 ▼
      +cart_line_id: 989642
      +cart_id: 13049301
      +parent_line_id: null
      +quantity: 1
      +article_id: 1164
      +article_name: "CUSTOMIZED T-SHIRT"
      +pvp: 29.5
    }
    1 => CartLine {#170 ▼
      +cart_line_id: 989643
      +cart_id: 13049301
      +parent_line_id: 989642
      +quantity: 2
      +article_id: 199
      +article_name: "EXTRA COMPLEMENT"
      +pvp: 2.5

    }
  ]

}

这是我的laravel foreach循环:

@foreach ($cart->lines as $line)

@endforeach

我想要这个:

@foreach ($cart->lines as $line)
   @if($line->parent_line_id == $line->cart_line_id(previous))
     //print extra
   @endif
@endforeach

我想获取当前项目迭代的前一项。

这可能吗?

1 个答案:

答案 0 :(得分:2)

像这样:

@foreach ($cart->lines as $index => $line)
   @if($index > 0 && $line->parent_line_id == $cart->lines[$index - 1]->cart_line_id)
     //print extra
   @endif
@endforeach

或使用$loop变量(看到您使用5.3):

@foreach ($cart->lines as $line)
   @if(!$loop->first && $line->parent_line_id == $cart->lines[$loop->index - 1]->cart_line_id)
     //print extra
   @endif
@endforeach