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

PHP如何获取同名多输入字段值并按组生成多维数组

问题原因

PHP解析表单提交的数组字段时,若多个同名多选字段都用[]作为后缀,所有选中值会被合并为同一个一维数组,所以无法得到分层的子数组结构。

解决方法

1. 修改View层的select标签name属性

给每个多选框的name显式指定第一维的索引,PHP就能区分不同多选框的选中值,分别存为独立子数组:

<!-- 第一个多选框,指定第一维索引为0,同步修改id避免重复 -->
<label for="dependent_benefit_0"><?php echo "Benefit Name" ?></label>
<select name="dependent_benefit[0][]" id="dependent_benefit_0" class="form-control" multiple="multiple">
<?php
foreach ($benefitlist as $list) { ?>
<option value="<?php echo $list->benefit_id ?>"><?php echo $list->benefit_name ?></option>
<?php }
?>
</select>

<!-- 第二个多选框,指定第一维索引为1 -->
<label for="dependent_benefit_1"><?php echo "Benefit Name" ?></label>
<select name="dependent_benefit[1][]" id="dependent_benefit_1" class="form-control" multiple="multiple">
<?php
foreach ($benefitlist as $list) { ?>
<option value="<?php echo $list->benefit_id ?>"><?php echo $list->benefit_name ?></option>
<?php }
?>
</select>

如果多选框是动态循环生成的,直接用循环的下标变量作为第一维索引即可,比如name="dependent_benefit[<?php echo $i; ?>][]",$i从0开始递增即可。

2. 控制器代码无需修改

原来的取值逻辑可以直接拿到预期的二维数组结构:

$dependent_benefit = $this->input->post('dependent_benefit', true);

此时第一个多选框的选中值会存放在$dependent_benefit[0]子数组中,第二个多选框的选中值会存放在$dependent_benefit[1]子数组中,和你预期的结构完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:15:06