Php 如何打印\u r$\u POST数组?

Php 如何打印\u r$\u POST数组?,php,variables,post,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

我有下表

<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 />";
  }

?>

但它只返回以下内容:
0

数组

我做错了什么?

只是:

foreach ( $_POST as $key => $value) {

  echo "<p>".$key."</p>";
  echo "<p>".$value."</p>";
  echo "<hr />";

} 
foreach($\u发布为$key=>$value){
回显“”$key.

”; 回声“”$value.“

”; 回声“
”; }
您正在添加
$\u POST
数组作为
$myarray
的第一个元素。如果您希望引用它,只需执行以下操作:

$myarray = $_POST;

但是,这可能不是必需的,因为您可以在脚本中通过
$\u POST
调用它。

$\u POST
本身就是一个数组,您不需要从中生成数组。您所做的是将
$\u POST
数组嵌套在一个新数组中。这就是为什么要打印
Array
。 将其更改为:

foreach ($_POST as $key => $value) {

  echo "<p>".$key."</p>";
  echo "<p>".$value."</p>";
  echo "<hr />";

} 
foreach($\u发布为$key=>$value){
回显“”$key.

”; 回声“”$value.“

”; 回声“
”; }
$\u POST已经是一个数组。试试这个:

foreach ($_POST as $key => $value) {
    echo "<p>".$key."</p>";
    echo "<p>".$value."</p>";
    echo "<hr />";
} 
foreach($\u发布为$key=>$value){
回显“”$key.

”; 回声“”$value.“

”; 回声“
”; }
$\u 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
数组是对称的。如果它们有不同数量的元素,那么您需要采取不同的方法。

为什么要将
$\u 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) {
    // ...
}


这将起作用,您的第一个解决方案是尝试打印数组,因为您的值是数组。

因为您有嵌套数组,所以我实际上建议使用递归方法:

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 );

foreach循环工作得很好,但是您也可以

print_r($_POST);
或在浏览器中进行漂亮的打印:

echo "<pre>";
print_r($_POST);
echo "</pre>";
echo”“;
打印(邮政美元);
回声“;

最近遇到了这种“内爆”

可能对输出数组有用


因为您需要查看测试结果。下面的代码是简单而优雅的解决方案

echo”“;
打印(邮政美元);
回声“;

此外,您可以使用
print\u r($\u POST)
var\u dump($\u POST)
可视化数组。您不能
回显$value
,因为它同时是
id
value
的数组keys@Phil好吧,你肯定可以回显数组=)我应该说“您不能回显
$value
并期望看到任何有用的内容" ;-)这将只返回4个数组中的2个。另外,我还想显示字段的值-插入到输入中的内容。这将返回
id

数组
值数组
仅4个中的2个。另外,我想显示字段的值-输入中插入的内容。好的,对不起,没有显示名称参数是数组的部分。我会编辑的。小心这个方法。文本输入可以,但如果输入是混合的(比如文本和复选框),计数将与未选中的不匹配checkboxes@Phil因此,我在答案上做了笔记。@phil-实际上,我将主要使用这个复选框。解决方案是什么?是否有理由尝试将多个文本字段收集到同一个名称中?另外,如果您不关心它看起来有多漂亮,
echo“”。打印($value,TRUE)。“

可能是你的朋友。@Kyle-最后这将是一个大的输入表,用于更新数据库。你是如何填写这个表的?假设文本已经存在于某个地方,那么
*.sql
文件不是一个不错的选择吗?@Kyle-对我来说这是最简单的-但对一些非技术性的人来说-我们正在删除表格DB的所有内容的文件,填写/更改输入并提交更新是正确的方法。注意,这可能会输出值,但不会输出键
echo "<pre>";
print_r($_POST);
echo "</pre>";
echo 'Variables: ' . implode( ', ', $_POST);
echo "<pre>";
print_r($_POST);
echo "</pre>";