PHP表单提交数字存入数组时所有元素值相同问题求助
问题根源
你当前的代码和表单存在两个核心问题:
- 你的HTML表单仅设置了1个名为
number的输入框,每次提交请求时,$_POST['number']只会获取到这一个输入框的值 - 你写的循环逻辑是把同一个值重复插入数组5次,自然最终数组所有元素都是同一个数字
方案1:单页填写5个数字一次提交
如果你想要用户在同一个页面填完5个数字,点击一次提交就生成含5个元素的数组,按下面调整即可:
修改HTML表单
<form action="activity_1.php" method="post"> <input type="text" name="number[]"> <input type="text" name="number[]"> <input type="text" name="number[]"> <input type="text" name="number[]"> <input type="text" name="number[]"> <input type="submit" value="Submit" name="submit"> </form>
注意输入框的name属性加了[]后缀,PHP会自动把同名带[]的请求参数解析为数组。
PHP处理代码
直接接收即可,不需要手动写循环插入:
// 先判断参数存在再操作,避免报错 if (isset($_POST['number']) && is_array($_POST['number'])) { $no = $_POST['number']; // 后续可自行加校验逻辑,比如判断是否为数字、元素数量是否为5等 }
方案2:用户每次提交1个数字,累计提交5次生成数组
如果你需要用户分5次提交,每次填一个数字,最后凑齐5个存入数组,需要用session存储历史提交的数值:
PHP处理代码(activity_1.php)
// 开启session,用来存储历史提交的数字 session_start(); // 初始化存储数组 if (!isset($_SESSION['no'])) { $_SESSION['no'] = []; } // 处理本次提交的数字 if (isset($_POST['number']) && trim($_POST['number']) != '') { // 把当前提交的数字加入数组 array_push($_SESSION['no'], $_POST['number']); // 凑够5个就可以执行业务逻辑 if (count($_SESSION['no']) == 5) { $no = $_SESSION['no']; // 用完可以清空session里的数组,方便下一轮录入 unset($_SESSION['no']); // 这里写你拿到5个数字后的后续业务逻辑 } }
内容的提问来源于stack exchange,提问作者PMConcepcion
相关产品推荐
相关产品推荐

