我有下表。
<form method="post" action="test.php">
<input name="id[]" type="text" value="ID1" />
<input name="value[]" type="text" value="Value1" />
<hr />
<input name="id[]" type="text" value="ID2" />
<input name="value[]" type="text" value="Value2" />
<hr />
<input name="id[]" type="text" value="ID3" />
<input name="value[]" type="text" value="Value3" />
<hr />
<input name="id[]" type="text" value="ID4" />
<input name="value[]" type="text" value="Value4" />
<hr />
<input type="submit" />
</form>
和test.php文件
<?php
$myarray = array( $_POST);
foreach ($myarray as $key => $value)
{
echo "<p>".$key."</p>";
echo "<p>".$value."</p>";
echo "<hr />";
}
?>
但它只返回这个:<p>0</p><p>Array</p><hr />
我做错了什么?
答案 0 :(得分:26)
foreach循环工作得很好,但你也可以简单地
print_r($_POST);
或者在浏览器中进行漂亮打印:
echo "<pre>";
print_r($_POST);
echo "</pre>";
答案 1 :(得分:11)
<?php
foreach ($_POST as $key => $value) {
echo '<p>'.$key.'</p>';
foreach($value as $k => $v)
{
echo '<p>'.$k.'</p>';
echo '<p>'.$v.'</p>';
echo '<hr />';
}
}
?>
这样可行,您的第一个解决方案是尝试打印数组,因为您的值是一个数组。
答案 2 :(得分:5)
$ _ POST已经是一个数组,所以你不需要在它周围包装array()。
请改为尝试:
<?php
for ($i=0;$i<count($_POST['id']);$i++) {
echo "<p>".$_POST['id'][$i]."</p>";
echo "<p>".$_POST['value'][$i]."</p>";
echo "<hr />";
}
?>
注意:这是有效的,因为您的id
和value
数组是对称的。如果他们有不同数量的元素,那么你需要采取不同的方法。
答案 3 :(得分:2)
为什么要将$_POST
数组包装在数组中?
您可以使用以下
访问“id”和“value”数组// assuming the appropriate isset() checks for $_POST['id'] and $_POST['value']
$ids = $_POST['id'];
$values = $_POST['value'];
foreach ($ids as $idx => $id) {
// ...
}
foreach ($values as $idx => $value) {
// ...
}
答案 4 :(得分:1)
只需:
foreach ( $_POST as $key => $value) {
echo "<p>".$key."</p>";
echo "<p>".$value."</p>";
echo "<hr />";
}
答案 5 :(得分:1)
您要将$_POST
数组添加为$myarray
的第一个元素。如果您想参考它,请执行以下操作:
$myarray = $_POST;
但是,这可能不是必需的,因为您可以在脚本中通过$_POST
调用它。
答案 6 :(得分:1)
因为你有嵌套数组,所以我实际上建议采用递归方法:
function recurse_into_array( $in, $tabs = "" )
{
foreach( $in as $key => $item )
{
echo $tabs . $key . ' => ';
if( is_array( $item ) )
{
recurse_into_array( $item, $tabs . "\t" );
}
else
{
echo $tabs . "\t" . $key;
}
}
}
recurse_into_array( $_POST );
答案 7 :(得分:1)
碰到了这个&#39;内爆&#39;最近。
可能对输出数组有用。 http://in2.php.net/implode
echo 'Variables: ' . implode( ', ', $_POST);
答案 8 :(得分:0)
$_POST
本身就是一个数组,你不需要用它来制作一个数组。你所做的是将$_POST
数组嵌套在一个新数组中。这就是您打印Array
的原因。
将其更改为:
foreach ($_POST as $key => $value) {
echo "<p>".$key."</p>";
echo "<p>".$value."</p>";
echo "<hr />";
}
答案 9 :(得分:0)
$ _ POST已经是一个数组。试试这个:
foreach ($_POST as $key => $value) {
echo "<p>".$key."</p>";
echo "<p>".$value."</p>";
echo "<hr />";
}
答案 10 :(得分:0)
您需要查看结果以进行测试。下面的代码是简单而优雅的解决方案。
echo "<pre>";
print_r($_POST);
echo "</pre>";