2010-09-03 94 views
1

Form: $ headerValues = array();PHP array post data

$headerValues[1][2]="Test"; 
... 
.... 
echo "<input type=\"hidden\" name=\"ArrayData\" value=\"$headerValues\"/>"; 
echo "<input type=\"submit\" name=\"submit\" value=\"Submit\" />"; 

如何在表單POST閱讀headerValues,我看到的陣列時,我使用此代碼

foreach (array_keys($_POST) as $key) { 
    $$key = $_POST[$key]; 
    print "$key is ${$key}<br />"; 
    print_r(${$key}); 
} 

回答

0

您可以使用:

$headerValues=htmlspecialchars(serialize(array('blah','test'))); 
echo "<input type=\"hidden\" name=\"ArrayData\" value=\"$headerValues\"/>"; 
echo "<input type=\"submit\" name=\"submit\" value=\"Submit\" />"; 

得到

$value = unserialize($_POST['ArrayData']); 

參考: http://php.net/manual/en/function.serialize.php

3

問題是你輸出字符串「ARRAY」作爲你的字段的值。這是在PHP中將數組轉換爲字符串時發生的情況。在下次出現類似問題時檢查HTML源代碼,這是調試HTML時非常關鍵的一步。

用這個代替:

echo "<input type=\"hidden\" name=\"ArrayData\" value=\"", implode(' ', $headerValues), '"/>'; 

你處理的輸入也是不必要的複雜性的方法,這就夠了:

foreach($_POST as $key => $value) 
    echo "$key is $value<br />"; 
+0

哈哈。我喜歡5個答案中的一個,你有唯一一個接近實際問題的答案。 – Tim 2010-09-03 19:37:37

0

你需要寫出多個<input name="ArrayData[]">元素,每個值。空方括號表示PHP在提交表單時應將每個值存儲在數組中。

$headerValues=array('blah','test'); 

for ($headerValues as $value) { 
    echo "<input type=\"hidden\" name=\"ArrayData[]\" value=\"$value\"/>"; 
} 

然後$_POST['ArrayData']將是一個數組,你可以遍歷:

foreach ($_POST['ArrayData'] as $i => $value) { 
    echo "ArrayData[$i] is $value<br />"; 
}