是否可以对$ _POST变量进行分组?

时间:2009-10-16 08:35:04

标签: php forms post

我有一个庞大的表单(对于内部CMS)由几个部分组成,其中一些是可选的,其中一些是必修的。一切都是一种喧闹的形式(它必须像这样,没有ajax,没有其他方式:-()

由于采用Dilbertesque方式,每一秒都会发生变化,我想知道是否有任何简单的方法对$ _POST数据进行分组,我的意思是发送这样的POST:

$_POST['form1']['datax']

或轻松地从服务器端检索数据,并且很容易我的意思是不必明确声明:

$array1 = array($_POST['datax'],$_POST['datay'],...);

$array2 = array($_POST['dataalpha'],$_POST['dataomega'],...);

因为有大约60个字段。

我希望我能够很好地解释这一点并且总是非常感谢你。

4 个答案:

答案 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']"/>