首页 > 解决方案 > 一个 foreach 中的两个变量

问题描述

我需要一个 foreach 中的两个变量。现在我有这样的:

 @php $championships = \App\Models\Championship::all(); @endphp
    <div class="tour-list">
        @foreach($tours as $tour)
        <div class="tour-list-box row">
            <input type="text" value="{{$tour->name}}" class="col-md-3 input-styles">
            <input type="date" value="{{$tour->start_date}}" class="col-md-3 input-styles">
            <select name="" id="" class="col-md-3 input-styles">
                @foreach($championships as $championship)
                @if($championship->deleted)
                <option value="">select championship</option>

                @else
                <option value="">{{$championship->name}}</option>
                @endif

                @endforeach
                @if($tour->championship->deleted)
                @else
                <option selected value="">{{$tour->championship->name}}</option>
                @endif


            </select>
            <!-- all championships -->
            <span tour_id="{{$tour->id}}" class="btn btn-sm btn-primary pull-left col-md-1 tour-remove-button"><span class="glyphicon glyphicon-remove"></span></span>
            <span championship_id="{{$championship->id}}" class="btn btn-sm btn-primary pull-right col-md-1 tour-edit-input"><span class="glyphicon glyphicon-edit"></span> </span>
        </div>
        @endforeach
    </div>

但它重复了 2 次,所以我需要在一个 foreach 中使用这 2 个变量 $tours 和 $championships。我试过这个:

 @foreach(array_combine($championships, $tours) as $championship => $tour)

@endforeach

但我收到错误“array_combine(): Argument #1 ($keys) must be of type array,”有 2 个变量是否可行?

感谢您的回答<3

标签: phplaravel

解决方案


首先,不建议直接在刀片文件中使用模型,而是将所有这些逻辑放在控制器中,并将一个变量传递给视图。

其次,所有 eloquent 都是对象(集合),所以你不能把它们当作数组来处理,把它们当作你需要的数组$championships = \App\Models\Championship::all()->toArray()

第三,array_combine- 通过使用一个数组作为键,另一个作为它的值来创建一个数组,您需要使用它$array = array_unique(array_merge($array1, $array2));来将 2 个数组合并为一个仅包含唯一值的数组


推荐阅读