PHP新手求助:表单提交后指定POST数组元素implode无值问题
问题分析与解决办法
嘿,刚入门PHP碰到这种小困惑太正常了,咱们来拆解一下问题根源~
核心原因:$_POST["data submitted"]这个键根本不存在!
你遇到的情况,本质是你以为$_POST里有个叫"data submitted"的数组,但实际上这个键名在$_POST里并不存在,所以用它来implode自然会得到空字符串。
为什么会这样?大概率是你的HTML表单字段的name属性和你预想的不一致:
- 如果你想让四个输入框的值被打包成一个数组提交,需要把每个输入框的
name设成同一个数组格式,比如:
这样提交后,<input type="text" name="employee[]"> <input type="text" name="employee[]"> <input type="text" name="employee[]"> <input type="text" name="employee[]">$_POST["employee"]才是包含四个值的数组,此时implode($_POST["employee"])就能正常得到拼接后的字符串。 - 如果你的四个输入框是各自独立的
name(比如name="emp1"、name="emp2"等),那$_POST里的键就是这四个单独的名字,根本没有"data submitted"这个键。
为什么直接implode整个$_POST有值?
因为$_POST本身确实包含了你提交的四个字段的键值对,当你直接implode($_POST)时,PHP会默认把数组里的所有值用空字符串拼接起来,所以你能看到内容——但这其实是把所有字段的值硬凑到一起,并不是你原本想要的“针对某个特定数组”的操作。
快速解决建议
- 修正表单的
name属性:如果想统一用数组接收,就把四个输入框的name都设成xxx[](比如employee[]),之后用implode($_POST["employee"])处理。 - 手动拼接独立字段:如果不想改表单,就直接把四个字段的值拼起来,比如:
// 记得先做存在性检查,避免报错 $emp1 = isset($_POST['emp1']) ? $_POST['emp1'] : ''; $emp2 = isset($_POST['emp2']) ? $_POST['emp2'] : ''; $emp3 = isset($_POST['emp3']) ? $_POST['emp3'] : ''; $emp4 = isset($_POST['emp4']) ? $_POST['emp4'] : ''; $employee = $emp1 . $emp2 . $emp3 . $emp4; - 避开带空格的键名:就算你非要用类似
"data submitted"的键名,也不建议——带空格的键名在PHP里虽然能通过$_POST["data submitted"]访问,但后续很容易出问题,换成下划线data_submitted会更稳妥。
内容的提问来源于stack exchange,提问作者will mannix
相关产品推荐
相关产品推荐

