I know I can do things like <input name="foo[]">
, but is it possible to do things like <input name="foo[bar]">
and have it show up in PHP as $_POST['foo']['bar']
?
The reason I ask is because I'm making a huge table of form elements (including <select>
with multiple selections), and I want to have my data organized cleanly for the script that I'm POSTing to. I want the input elements in each column to have the same base name, but a different row identifier as an array key. Does that make sense?
EDIT: I tried exactly this already, but apparently Drupal is interfering with what I'm trying to do. I thought I was just getting my syntax wrong. Firebug tells me that my input names are constructed exactly like this, but my data comes back as [foo[bar]] => data
rather than [foo] => array([bar] => data)
.
EDIT 2: It seems my real problem was my assumption that $form_state['values']
in Drupal would have the same array hierarchy as $_POST
. I should never have assumed that Drupal would be that reasonable and intuitive. I apologize for wasting your time. You may go about your business.
You can do this in Drupal too, quite easily. The important thing you have to remember about is setting form '#tree' parameter to TRUE. To give you a quick example:
Now, if you print_r() $form_state['values'] in MYMODULE_form_submit($form, &$form_state), you will see something like this:
Let say we want to print student scores using the form below:
and PHP code to print their scores:
This will print the values you input into the field.
Yes you can. you can even do
name="foor[bar][]"
and on for even more padding.