【问题标题】:Laravel php combine two foreachLaravel php结合了两个foreach
【发布时间】:2019-04-29 00:39:23
【问题描述】:

在我的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 和名称。

【问题讨论】:

    标签: php laravel-4 laravel-blade


    【解决方案1】:

    定义一个我们将用作“标志”的数组,并在每次迭代时检查当前产品 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

    【讨论】:

    • 奇怪,我实现你的代码后,表格内容现在是空的。
    • @BebekimLim 是的,那是我的错误,在if 语句中的in_array() 之前添加一个!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 2019-06-28
    • 2012-05-24
    • 1970-01-01
    • 2015-08-12
    • 2015-04-04
    相关资源
    最近更新 更多