PHP表单提交无法同时获取多组from/to时间,仅能获取其一
解决PHP表单中星期与对应时间的匹配问题
问题根源
当前表单元素采用day[]、from[]、to[]的自动递增索引命名方式,当仅勾选部分星期时,提交的day数组索引会和from/to数组索引错位。比如只勾选周二,day数组的索引为0,但from数组会包含周一(空值)和周二的时间,导致遍历day时拿到的from[$i]并非对应星期的时间。
解决方案
给每组星期、开始时间、结束时间指定统一的固定索引,让同一组的三个元素共享同一个索引,实现精准关联。
修改后的完整代码
<?php if ($_POST) { // 遍历选中星期的索引,关联对应组的时间 foreach ($_POST['day'] as $index => $day) { $from = $_POST['from'][$index] ?? ''; $to = $_POST['to'][$index] ?? ''; echo "星期:{$day}<br>"; echo "开始时间:{$from}<br>"; echo "结束时间:{$to}<br><hr>"; } } ?> <form action="" method="POST"> <input type="checkbox" name="day[0]" value="Monday"> Monday | From <input type="time" name="from[0]"> To <input type="time" name="to[0]"><br> <input type="checkbox" name="day[1]" value="Tuesday"> Tuesday | From <input type="time" name="from[1]"> To <input type="time" name="to[1]"><br> <input type="checkbox" name="day[2]" value="Wednesday"> Wednesday | From <input type="time" name="from[2]"> To <input type="time" name="to[2]"><br> <input type="submit" name="submit" id="submit" value="submit"> </form>
关键修改说明
- 表单部分:将每组元素的
name改为带固定索引的格式(如day[0]、from[0]),确保同一组的星期和时间元素共享同一索引 - PHP处理部分:通过
foreach遍历$_POST['day']的索引,直接获取对应组的from和to值;用?? ''处理未填写时间的情况,避免报错 - 移除原表单中无效的
to="from[]"属性(time输入框无此属性)
内容的提问来源于stack exchange,提问作者Ravia Aadepu
相关产品推荐
相关产品推荐

