添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I have a form that is a little complex and I am hoping to simplify the server-side (PHP) processing by natively POSTing an array of tuples.

The first part of the form represents a User :

  • First Name
  • Last Name
  • Email
  • Address
  • The second part of the form represents a Tree :

  • Fruit
  • Height
  • The problem is that I need to be able to POST multiple Trees for a single User in the same form. I would like to send the information as a single User with an array of Trees but this might be too complex to do with a form. The only thing that comes to mind is using javascript to create some JSON message with a User object and an array of Tree objects. But it would be nice to avoid javascript to support more users (some people have scripts turned off).

    Does the array guarantee order? I would like an array of Tree objects which would have multiple fields, so this would mean I have to use multiple arrays to represent a Tree and the arrays must be ordered so I can figure out which Tree they represent. styfle Jan 31, 2012 at 2:44
    <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]">
    

    it should end up like this in the $_POST[] array (PHP format for easy visualization)

    $_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'
                    What chars are allowed in array indexing? Can we use ,.:` @? Example: tree[tree 1][fr ui_t] tree[tree.1][fru:it] tree[tree@1][fru,it]  Is _ only safe delimiter in key naming?
    – CoR
                    Jun 17, 2014 at 18:53
                    How do i get this submitted data as array/object in js to use in submit callback... i have tried new formData($("form")[0]) and jQuery $("form").serializeArray() both returning name="tree[tree1][fruit]" as string....help
    – santoshe61
                    Mar 16, 2020 at 10:08
                    Note: it doesn't work with jquery functions to collect form data as .serialize() or .serializeArray()
    – SubjectDelta
                    Mar 18, 2020 at 11:48
    

    You can also post multiple inputs with the same name and have them save into an array by adding empty square brackets to the input name like this:

    <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"/>
    

    If you use php:

    print_r($_POST['comment']) 
    

    you will get this:

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