Laravel PHP结合了两个foreach

时间:2018-11-27 09:49:17

标签: php laravel-4 laravel-blade

在我的blade.php文件中,我试图合并两个foreach循环以在表中显示数据。我曾尝试使用嵌套循环之类的方法,但是它不起作用。

@foreach($cat->products as $idx => $product)
    <tr ng-init="item.items[{{$cat->id}}][{{$idx}}] = {};">
    @foreach ($queryInv as $querInvs)
        <td>{{$product->sku}}</td>
        <td>{{$product->name}}</td>
        <td class="text-right">{{{$querInvs->total or 0}}}</td>
    </tr>
    @endforeach
@endforeach

我只需要将总数据插入表中即可。现在,总计可以正确显示,但是它将重复表中的sku和名称。

1 个答案:

答案 0 :(得分:0)

定义一个数组,将其用作“标志”,并在每次迭代时检查当前产品SKU是否不在“标志”数组中。如果不是,则显示,然后将当前产品SKU添加到已处理SKU列表中,然后照常继续操作。

@php $skus = [] @endphp
@foreach($cat->products as $idx => $product)
    @if (!in_array($product->sku, $skus))
        <tr ng-init="item.items[{{$cat->id}}][{{$idx}}] = {};">
            @foreach ($queryInv as $querInvs)
                <td>{{$product->sku}}</td>
                <td>{{$product->name}}</td>
                <td class="text-right">{{{$querInvs->total or 0}}}</td>
            @endforeach
        </tr>
        @php array_push($skus, $product->sku); @endphp
    @endif
@endforeach

注意:您正在使用Laravel 4,Laravel的当前版本是5.7,我绝对会更新并使用最新版本。

阅读材料

in_array

array_push