2009-10-16 85 views
11

我有一个巨大的形式(内部CMS),由几个部分组成,其中一些是可选的,其中一些是强制性的。所有的是在一个humungous形式(它必须是这样的,没有ajax,没有其他方式:-()

由于在Dilbertesque方式一切都改变每一秒我想知道是否有任何简单的方法分组$ _POST数据,我的意思是发送POST这样的:

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

或容易地检索来自服务器端的数据,以及容易我的意思是具有withouth的到expressily宣告:

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

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

因为有大约60个字段。

我希望我能解释这口井和往常一样非常感谢你..

回答

24

如果你给你的输入元素类似数组的名字,他们的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 
    ) 
) 
+0

谢谢你,完全忘了这个 – 0plus1 2009-10-16 08:40:00

+0

我从来不知道你可以做到这一点!大! – Psytronic 2009-10-16 09:45:08

+0

此外,从我记得,你可以在方括号之间键入东西,它就成为该数组的索引! – alex 2009-10-20 13:25:51

2

用方括号输入名称后会导致它在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

4

如果你正确地命名你的输入,你可以这样做。示例:

<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" 
1

你可以用你的表单字段是这样的:

<input type="text" name="form1['datax']"/>