You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel框架foreach循环下0/1值checkbox存储结果不匹配问题

问题原因

HTML表单提交时,未选中的checkbox不会被提交到后端。你当前为每一项配置了同名为score[]的隐藏字段和复选框:

  • 当复选框未选中时,仅提交隐藏字段的0,对应score数组新增1个元素
  • 当复选框选中时,隐藏字段的0和复选框的1都会被提交,对应score数组新增2个元素
    这就导致score数组的总长度 = 总选项数 + 选中选项数,下标和criteria_id数组的下标完全无法对应,才会出现实际存储值和预期不符的交替0、1结果。
解决方案

推荐使用指定显式索引的方案,确保同一条考核项的隐藏字段和复选框共用同一个索引,复选框选中时提交的1会自动覆盖同索引隐藏字段的0:

视图层修改代码

@foreach($criteria as $index => $data)
    <table>
       <tr>
           <td class="col-4">
              <input type="hidden" name="criteria_id[{{ $index }}]" value="{{ $data->id }}">
              {{ $data->criteria_name}} : 
           </td>
           <td class="col-2">
              <input type="hidden" class="form-control" name="score[{{ $index }}]" value="0">
              <input type="checkbox" class="form-control" name="score[{{ $index }}]" value="1">
           </td>
       </tr>
    </table>
@endforeach

控制器层

原有逻辑无需修改,直接按索引取值即可匹配到对应选项的提交值。

内容的提问来源于stack exchange,提问作者mfahmifadh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:45:03