我可以把表单输入关联数组在PHP中进行处理? [英] Can I put associative arrays in form inputs to be processed in 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屋!