HTML表单多组父子级输入转PHP多维数组 无法读取成员属性求助
PHP多维表单提交数据处理问题修复
问题原因
你的HTML表单提交结构符合PHP多维数组解析规则,问题出在PHP处理逻辑的遍历部分:
你遍历$_POST['group'][$i]['member']得到的每一项$name并不是单独的姓名字符串,而是包含name、age两个键的关联数组;你取年龄时直接取$_POST['group'][$i]['member'][$m]也是取到了整个成员数组,没有获取到对应的年龄字段值。
修复后代码
$output = array(); foreach ($_POST['group'] as $group) { $members = array(); // 直接遍历当前分组下的所有成员 foreach ($group['member'] as $member) { $members[] = array( 'name' => $member['name'], 'age' => $member['age'] ); } $output[] = array( 'group_name' => $group['name'], 'members' => $members ); } var_dump($output);
优化说明
- 直接通过foreach遍历数组取值,不需要额外维护
$i、$m计数变量,代码更简洁也避免索引取值错误 - 直接使用外层foreach拿到的
$group变量取值,不需要重复从$_POST全局变量中按索引读取,逻辑更清晰 - 提交的表单结构完全不需要修改,直接用上述代码即可正确获取到所有分组和对应的成员姓名、年龄数据
内容的提问来源于stack exchange,提问作者Samuel
相关产品推荐
相关产品推荐

