2011-08-24 101 views
0

我想從我創造,我用一個數組來命名錶單他們喜歡的數據:如何使用PHP格式化數組?

<input type="text" name="fname[]" /> 
<input type="text" name="mname[]" /> 
<input type="text" name="lname[]" /> 

在說表單域動態插入或在網頁上移除。

在我的腳本來獲得的表格值,我寫的是這樣的:

$student = array(
    'fname' => '$_POST[fname]', 
    'mname' => '$_POST[mname]', 
    'lname' => '$_POST[lname]', 
); 

但是,當我使用的var_dump看到的值,每個字段將從0索引,如果有重複的領域,它將再次被聲明爲數組中的另一個數組。

我想要做的是與這個stucture數組:

$student = array(
    array(
      'fname' => 'fname1', 
      'mname' => 'mname1', 
      'lname' => 'lname1' 
    ), 
    array(
      'fname' => 'fname2', 
      'mname' => 'mname3', 
      'lname' => 'lname2' 
    ) 
); 

我試圖用一個循環,但我只是一次又一次的失敗。任何人都可以幫我解決這個問題嗎?

非常感謝您的幫助。

回答

2
<input type="text" name="student[]['fname']" /> 
<input type="text" name="student[]['mname']" /> 
<input type="text" name="student[]['lname']" /> 

沒有循環必要的。您的$_POST['student']變量將自動成爲您想要實現的數組。

編輯:這沒有達到預期的結果。它爲每個字段遞增student。將一個n值添加到第一組括號,如student[n][fname]確實達到了預期的結果。我不知道如何編寫腳本來即時動態生成這三個字段,但如果您可以弄清楚如何添加n值,那麼您就是最好的選擇。

+1

+1這就是我輸入的答案。不再需要它了。 –

+0

您好Stephan,我對如何使用$ _POST [] – Jag

+0

@Jag:做一個var_dump($ _POST ['student']);''你會看到結構'學生'領域。 –

0
<?php 

for($i=0; $i<count($_POST['fname']); $i++) { 

$student[] = array(
     'fname' => $_POST['fname'][$i], 
     'mname' => $_POST['mname'][$i], 
     'lname' => $_POST['lname'][$i], 
     ); 
} 

?> 
+0

由於我的表單字段數量因每次提交而不同,我會如何爲停止循環做些什麼?對不起,克林特,我還是很新的編程。 – Jag

+1

斯蒂芬斯是更容易/更好的方式做它,但我更新了我的例子與一個循環,因爲它是你感到困惑的循環。 –

+0

明白了。謝謝克林特。 – Jag

0

哎呀,我認爲Stephan's answer就足夠了,但應該是我認爲(現在無法測試)的以下內容。試試看:

<input type="text" name="student[0]['fname']" /> 
<input type="text" name="student[0]['mname']" /> 
<input type="text" name="student[0]['lname']" /> 

<input type="text" name="student[1]['fname']" /> 
<input type="text" name="student[1]['mname']" /> 
<input type="text" name="student[1]['lname']" /> 

etc... 

(注意添加數字索引)

然後,當你做一個echo '<pre>' . print_r($_POST[ 'student' ], true);你應該看到你正在尋找的結構。

+0

我想要添加和刪除表單域,因此,我應該弄清楚如何添加student [n] [fname]等。 非常感謝您告訴我如何幹淨地打印陣列。 – Jag