2009-10-16 116 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']"/>