从不带javascript的HTML表单发布数组

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

我有一个有点复杂的表单,我希望通过本地发布元组数组简化服务器端(PHP)处理。

表单的第一部分代表一个用户

  • First Name
  • Last Name
  • Email
  • Address
  • 等等

表单的第二部分代表一棵树

  • Fruit
  • Height
  • 等等

问题是我需要能够以相同的形式为单个用户发布多个。我想将这些信息作为单个用户发送一系列树,但这可能对于表单来说太复杂了。唯一想到的就是使用javascript来创建一些带有User对象和Tree对象数组的JSON消息。但是,避免使用JavaScript来支持更多的用户会更好(有些人已关闭脚本)。

提问于
用户回答回答于

检查这一个。

<input type="text" name="firstname">
<input type="text" name="lastname">
<input type="text" name="email">
<input type="text" name="address">

<input type="text" name="tree[tree1][fruit]">
<input type="text" name="tree[tree1][height]">

<input type="text" name="tree[tree2][fruit]">
<input type="text" name="tree[tree2][height]">

<input type="text" name="tree[tree3][fruit]">
<input type="text" name="tree[tree3][height]">

它应该以$ _POST []数组(PHP格式,便于可视化)结束,

$_POST[] = array(
    'firstname'=>'value',
    'lastname'=>'value',
    'email'=>'value',
    'address'=>'value',
    'tree' => array(
        'tree1'=>array(
            'fruit'=>'value',
            'height'=>'value'
        ),
        'tree2'=>array(
            'fruit'=>'value',
            'height'=>'value'
        ),
        'tree3'=>array(
            'fruit'=>'value',
            'height'=>'value'
        )
    )
)
用户回答回答于

您也可以使用相同的名称发布多个输入,并通过将空方括号添加到输入名称来保存到数组中,如下所示:

<input type="text" name="comment[]" value="comment1"/>
<input type="text" name="comment[]" value="comment2"/>
<input type="text" name="comment[]" value="comment3"/>
<input type="text" name="comment[]" value="comment4"/>

如果你使用php:

print_r($_POST['comment']) 

你会得到这个:

Array ( [0] => 'comment1' [1] => 'comment2' [2] => 'comment3' [3] => 'comment4' )

扫码关注云+社区