如何将HTML表单的3个文本框数据存入PHP数组?
解决PHP表单数据存入数组的问题
嘿,我来帮你搞定这个数组存储的问题!先看看你之前两段代码的问题出在哪:
- 第一段代码里,你每次给
$farmAnimals赋值都是直接覆盖前一个值,所以最后变量里只保留了animal3的内容,根本没变成数组~ - 第二段的
$_POST["animal1", "animal2", "animal3"]是完全错误的PHP语法,PHP里不能用这种方式一次性获取多个数组元素,所以会报错。
下面给你几种靠谱的解决方案:
方案1:手动创建索引数组
直接把三个输入框的值放进一个新数组里,最简单直观:
<?php if (isset($_POST["send"])) { // 创建索引数组,依次存入三个动物名称 $farmAnimals = [ $_POST["animal1"], $_POST["animal2"], $_POST["animal3"] ]; // 测试输出数组,print_r能清晰展示结构 print_r($farmAnimals); } ?>
方案2:创建关联数组
如果想让数组的键和表单里的name对应(方便后续识别每个值的来源),可以用关联数组:
<?php if (isset($_POST["send"])) { $farmAnimals = [ 'animal1' => $_POST["animal1"], 'animal2' => $_POST["animal2"], 'animal3' => $_POST["animal3"] ]; // var_dump会输出更详细的数组信息,包括数据类型 var_dump($farmAnimals); } ?>
方案3:修改HTML表单,自动获取数组
如果以后可能要增加更多动物输入框,这种方式更灵活:把所有文本框的name改成animals[],这样提交后PHP会自动把这些值打包成数组:
修改后的HTML代码:
<form action="Test.php" method="post" name="myForm" id="myForm"> <input type="text" placeholder="Enter animal one..." name="animals[]" id="animal1"> <input type="text" placeholder="Enter animal two..." name="animals[]" id="animal2"> <input type="text" placeholder="Enter animal three..." name="animals[]" id="animal3"> <input type="submit" value="Submit" name="send" id="send"> </form>
对应的PHP代码:
<?php if (isset($_POST["send"])) { // 直接拿到打包好的数组 $farmAnimals = $_POST["animals"]; print_r($farmAnimals); } ?>
这样不管你加多少个name="animals[]"的输入框,PHP都能自动把它们的值收集到数组里,非常方便!
内容的提问来源于stack exchange,提问作者Max Svenman
相关产品推荐
相关产品推荐

