Stefano Borini
Stefano Borini

Reputation: 143935

Square brackets in HTML form arrays. Just conventional or with a meaning?

I frequently see, in particular in the PHP world, the following writing if you want to create a FORM array.

<input name="MyArray[]" />
<input name="MyArray[]" />

with the square brackets []. Nevertheless, the submit operation just passes the same key entry twice. It appears that the [] is just conventional that maps nicely to the PHP world array, but you would obtain the same result with just the following

<input name="MyArray" />
<input name="MyArray" />

Indeed, in django I get a list of two entries, regardless of the style used.

Is this true ? Are the [] just conventional, or there's actually a real meaning into it from the HTML and HTTP key/value info ?

Upvotes: 11

Views: 4966

Answers (2)

jomo
jomo

Reputation: 14931

It's just conventional.


The W3C states:

Let the form data set be a list of name-value-type tuples

and for each input element, on submit:

Append an entry to the form data set with name as the name, the value of the field element as the value, and type as the type.

The W3C does not mention the use of [] or uniqueness of the name attribute.

Upvotes: 3

NickFitz
NickFitz

Reputation: 35091

They address a limitation of PHP, which doesn't generate an array automatically if multiple values with the same name are submitted, for example from a set of checkboxes or a multiple select. (IIRC it only returns the last value.)

Personally I've always thought it to be a pretty shoddy workaround. Even Classic ASP could cope with that without requiring client-side additions to markup. The server-side platform has no business imposing markup requirements on the client in this way.

Upvotes: 14

Related Questions