如何print_r $ _POST数组?

时间:2011-08-17 13:07:01

标签: php variables post

我有下表。

<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 />

我做错了什么?

11 个答案:

答案 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 />";

} 

 ?>

注意:这是有效的,因为您的idvalue数组是对称的。如果他们有不同数量的元素,那么你需要采取不同的方法。

答案 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>";