PHP数组发布数据

时间:2010-09-03 19:24:59

标签: php arrays post

形式:     $ headerValues =阵列();

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

如何在FORM POST上读取headerValues,当我使用此代码时,我将其视为ARRAY

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

3 个答案:

答案 0 :(得分:3)

问题是你输出字符串“ARRAY”作为字段的值。这是在PHP中将数组转换为字符串时发生的情况。下次遇到类似问题时请检查HTML源代码,这是调试HTML时非常关键的一步。

请改用:

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

你处理输入的方式也是不必要的复杂,这就足够了:

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

答案 1 :(得分: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

答案 2 :(得分: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 />";
}