首页 > 解决方案 > foreach 里面的 foreach 得到错误的值

问题描述

我希望输出是这样的 在此处输入图像描述

但我变得这样了 在此处输入图像描述

问题是第 4 行没有值,但值显示在那个..

我的代码看起来像这样

 @if($fridges)
  @foreach($fridges as $index => $fridge)
    @foreach($fridgereadings as $index1 => $fridgereading)
       @if($fridge->fridge_no == $fridgereading->fridge_id)
           @php $morning_reading = $fridgereading->morning_reading; @endphp
       @endif
    @endforeach
    <tr>
         <td>{{ $fridge->fridge_no }}</td>
              <input id="fridge_id" name="fridge_id[]" value="{{ $fridge->fridge_no }}" type="hidden" class="form-control">
         <td><input value="@if(!empty($morning_reading)) {{ $morning_reading }} @endif" id="morning_reading" name="morning_reading[]" type="text" class="form-control"></td>
         <td><input id="evening_reading" name="evening_reading[]" type="text" class="form-control"></td>
    </tr>
  @endforeach
@endif

第四行在ColumnFridge No中没有值,Morning reading但它显示了我们如何防止这种情况发生。

标签: laravelforeachnested

解决方案


您的问题是您没有$morning_reading在每次通过循环时重置 的值,因此当您处理冰箱 4 并在 中找不到它的值时$fridgereadings$morning_reading保留其先前的值(在本例中为30)。如果没有读数,您需要分配一个默认值:

 @if($fridges)
  @foreach($fridges as $index => $fridge)
    @php $morning_reading = ''; @endphp
    @foreach($fridgereadings as $index1 => $fridgereading)
       @if($fridge->fridge_no == $fridgereading->fridge_id)
           @php $morning_reading = $fridgereading->morning_reading; @endphp
       @endif
    @endforeach
    <tr>
         <td>{{ $fridge->fridge_no }}</td>
              <input id="fridge_id" name="fridge_id[]" value="{{ $fridge->fridge_no }}" type="hidden" class="form-control">
         <td><input value="@if(!empty($morning_reading)) {{ $morning_reading }} @endif" id="morning_reading" name="morning_reading[]" type="text" class="form-control"></td>
         <td><input id="evening_reading" name="evening_reading[]" type="text" class="form-control"></td>
    </tr>
  @endforeach
@endif

推荐阅读