我有一个庞大的表单(对于内部CMS)由几个部分组成,其中一些是可选的,其中一些是必修的。一切都是一种喧闹的形式(它必须像这样,没有ajax,没有其他方式:-()
由于采用Dilbertesque方式,每一秒都会发生变化,我想知道是否有任何简单的方法对$ _POST数据进行分组,我的意思是发送这样的POST:
$_POST['form1']['datax']
或轻松地从服务器端检索数据,并且很容易我的意思是不必明确声明:
$array1 = array($_POST['datax'],$_POST['datay'],...);
$array2 = array($_POST['dataalpha'],$_POST['dataomega'],...);
因为有大约60个字段。
我希望我能够很好地解释这一点并且总是非常感谢你。
答案 0 :(得分:26)
如果给输入元素类似于数组的名称,它们作为数组到达PHP $_POST
(或$ _GET)数组:
<input type="text" name="foo[]" value="a"/>
<input type="text" name="foo[]" value="b" />
<input type="text" name="foo[]" value="c" />
<input type="text" name="foo[bar]" value="d" />
<input type="text" name="foo[baz][]" value="e" />
<input type="text" name="foo[baz][]" value="f" />
转到:
print_r($_POST)
foo => array (
0 => a
1 => b
2 => c
bar => d
baz => array(
0 => e
1 => f
)
)
答案 1 :(得分:5)
如果您正确命名输入,则可以这样做。例如:
<input type="text" name="textInput[]" />
<input type="text" name="textInput[]" />
这将填充名为textInput的$ _POST中的数组。那就是:
$_POST['textInput'][0] == "whatever the first was set to be"
$_POST['textInput'][1] == "whatever the second was set to be"
答案 2 :(得分:3)
在输入名称后使用方括号将使其在PHP中分组:
<input name="foo[]" type="text" value="1" />
<input name="foo[]" type="text" value="2" />
您还可以创建一个关联数组:
<input name="foo[bar]" type="text" />
我认为多维数组也可以工作,但我不确定我是否真的尝试过它。
修改:这是同样的事情answered in the PHP FAQ。
答案 3 :(得分:1)
您可以使用以下表单字段:
<input type="text" name="form1['datax']"/>