Can I put associative arrays in form inputs to be processed in PHP? Can I put associative arrays in form inputs to be processed in PHP? arrays arrays

Can I put associative arrays in form inputs to be processed in PHP?


Let say we want to print student scores using the form below:

<form action="" method="POST">  <input name="student['john']">  <input name="student['kofi']">  <input name="student['kwame']">  <input type="submit" name="submit"></form>

and PHP code to print their scores:

if(isset($_POST['submit'])){    echo $_POST['student']['john'] . '<br />';    echo $_POST['student']['kofi'] . '<br />';    echo $_POST['student']['kwame'] . '<br />'; }

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.


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:

function MYMODULE_form() {  $form = array('#tree' => TRUE);  $form['group_1']['field_1'] = array(    '#type' => 'textfield',    '#title' => 'Field 1',  );  $form['group_1']['field_2'] = array(    '#type' => 'textfield',    '#title' => 'Field 2',  );  $form['group_2']['field_3'] = array(    '#type' => 'textfield',    '#title' => 'Field 3',  );  $form['submit'] = array(    '#type' => 'submit',    '#value' => 'Submit',  );  return $form;}

Now, if you print_r() $form_state['values'] in MYMODULE_form_submit($form, &$form_state), you will see something like this:

Array(    [group_1] => Array        (            [field_1] => abcd            [field_2] => efgh        )    [group_2] => Array        (            [field_3] => ijkl        )    [op] => Submit    [submit] => Submit    [form_build_id] => form-7a870f2ffdd231d9f76f033f4863648d    [form_id] => test_form)