我可以将关联数组放入要在 PHP 中处理的表单输入中吗?

新手上路,请多包涵

我知道我可以做 <input name="foo[]"> 之类的事情,但是是否可以做 <input name="foo[bar]"> 之类的事情并让它在 PHP 中显示为 $_POST['foo']['bar']

我问的原因是因为我正在制作一个巨大的表单元素表(包括 <select> 有多个选择),我想为我要发布到的脚本干净地组织我的数据。我希望每列中的输入元素具有相同的基本名称,但具有不同的行标识符作为数组键。那有意义吗?

编辑: 我已经试过了,但显然 Drupal 正在干扰我正在尝试做的事情。我以为我只是把我的语法弄错了。 Firebug 告诉我,我的输入名称完全像这样构造,但我的数据返回为 [foo[bar]] => data 而不是 [foo] => array([bar] => data)

编辑 2: 看来我真正的问题是我假设 $form_state['values'] 在 Drupal 中将具有与 $_POST 相同的数组层次结构。我不应该假设 Drupal 会如此合理和直观。我很抱歉浪费你的时间。你可以去做你的事。

原文由 DLH 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 217
2 个回答

您也可以在 Drupal 中轻松完成此操作。您必须记住的重要事情是将表单“#tree”参数设置为 TRUE。给你一个简单的例子:

 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;
}

现在,如果您在 MYMODULE_form_submit(\(form, &\)form_state) 中打印_r() $form_state[‘values’],您将看到如下内容:

 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
)

原文由 Maciej Zgadzaj 发布,翻译遵循 CC BY-SA 3.0 许可协议

假设我们要使用以下表格打印学生成绩:

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

和打印分数的 PHP 代码:

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

这将打印您输入到字段中的值。

原文由 Ernest Boabramah 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题