Unique/distinct 在 laravel foreach

Unique/distinct in laravel foreach

在 laravel 中,我有一个带有一些值的下拉 select 框,但是我围绕该框的 foreach 循环显示了 $psku->frame_desc 的每个实例,这是应该的。但是,我希望它只显示不同的值。

代码如下:

<select style="margin-top:10px; max-width:200px;" >
<option value="" selected data-default>Sort by type:
</option>
    @foreach ($orderFormData->pgroups as $pgroup)
      @foreach ($pgroup->pskus as $psku)
        <option value="{{ $psku->frame_desc }}">{{ $psku->frame_desc }}</option>
      @endforeach
    @endforeach

像 laravel 中这样在 foreach 中声明不同或唯一值的最佳方法是什么?

假设这些是collections,你可以这样做:

@foreach ($orderFormData->pgroups as $pgroup)
  @foreach ($pgroup->pskus->unique('frame_desc') as $psku)
    <option value="{{ $psku->frame_desc }}">{{ $psku->frame_desc }}</option>
  @endforeach
@endforeach

Documentation

如果他们不是collections,你可以让他们collections:

@foreach ($orderFormData->pgroups as $pgroup)
  @foreach (collect($pgroup->pskus)->unique('frame_desc') as $psku)
    <option value="{{ $psku->frame_desc }}">{{ $psku->frame_desc }}</option>
  @endforeach
@endforeach