我可以把表单输入关联数组在PHP中进行处理? [英] Can I put associative arrays in form inputs to be processed in PHP?

查看:243
本文介绍了我可以把表单输入关联数组在PHP中进行处理?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道我可以做这样的事情<输入名称=富[]> ,但有可能做的事情,比如 <输入名称=福[巴]> ,并让它在PHP中显示为 $ _ POST ['富'] ['酒吧']

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']?

我想问的原因是因为我做的表单元素的一个巨大的表(包括&LT;选择&GT; 通过多项选择),我想有说我张贴到脚本干净举办我的数据。我想在每列的输入元件具有相同的基本的名字,但不同的行标识符作为数组密钥。这是否有意义?

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?

编辑:我正是尝试这样做了,但显然Drupal是什么,我试图做的干扰。我想我刚开始我的语法错误。萤火告诉我,我的名字输入构造完全一样,但我的数据回来为 [富[巴] =&GT;数据,而不是 [富] =&GT;阵列([巴] =&GT;数据)。

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).

编辑2:看来我的真正的问题是我的假设,即 $ form_state ['值'] 在Drupal也有同样的阵列层级为 $ _ POST 。我从来没有认为Drupal的将是合理和直观。我为浪费你的时间道歉。您可以去您的业务。

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.

推荐答案

您可以在Drupal这样做也很容易。你必须要记住的重要一点是形式'#tree参数设置为TRUE。为了给你一个简单的例子:

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

现在,如果您在MYMODULE_form_submit($形式和放大器; $ form_state)的print_r()$ form_state ['值'],你会看到这样的事情:

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
)

这篇关于我可以把表单输入关联数组在PHP中进行处理?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆