【问题标题】:How to print_r $_POST array?如何打印_r $_POST 数组?
【发布时间】:2011-10-28 22:22:39
【问题描述】:

我有下表。

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

?>

但它只返回这个:&lt;p&gt;0&lt;/p&gt;&lt;p&gt;Array&lt;/p&gt;&lt;hr /&gt;

我做错了什么?

【问题讨论】:

  • 您尝试将多个文本字段收集到同一个名称中是否有原因?另外,如果您不关心它的外观,echo "&lt;p&gt;" . print_r($value, TRUE) . "&lt;/p&gt;"; 可能是您的朋友。
  • @Kyle - 最后这将是一个更新数据库的输入大表。
  • 你是怎么填表的?假设文本已经存在于某个地方,*.sql 文件不是一个不错的选择吗?
  • @Kyle - 对我来说这将是最简单的 - 但对于非技术人员 - 我们正在删除表格 DB 的所有内容的文件,填写/更改输入并提交更新是正确的做法。

标签: php variables post


【解决方案1】:

只是:

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

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

} 

【讨论】:

  • 此外,您可以使用print_r($_POST)var_dump($_POST) 可视化数组。
  • 你不能 echo $value 因为它是 idvalue 键的数组
  • @Phil 好吧,你肯定可以回显一个数组 =)
  • 我应该说“你不能回显$value并期望看到任何有用的东西”;-)
  • 这将返回&lt;p&gt;id&lt;/p&gt;&lt;p&gt;Array&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;value&lt;/p&gt;&lt;p&gt;Array&lt;/p&gt;&lt;hr /&gt; 仅 2 of 4。另外,我想显示字段的值 - 输入中插入的内容。
【解决方案2】:

您将$_POST 数组作为第一个元素添加到$myarray。如果您想引用它,只需执行以下操作:

$myarray = $_POST;

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

【讨论】:

    【解决方案3】:

    $_POST 本身就是一个数组,您不需要从中创建一个数组。您所做的是将$_POST 数组嵌套在一个新数组中。这就是您打印Array 的原因。 将其更改为:

    foreach ($_POST as $key => $value) {
    
      echo "<p>".$key."</p>";
      echo "<p>".$value."</p>";
      echo "<hr />";
    
    } 
    

    【讨论】:

      【解决方案4】:

      $_POST 已经是一个数组。试试这个:

      foreach ($_POST as $key => $value) {
          echo "<p>".$key."</p>";
          echo "<p>".$value."</p>";
          echo "<hr />";
      } 
      

      【讨论】:

        【解决方案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 数组是对称的。如果它们有不同数量的元素,那么您需要采用不同的方法。

        【讨论】:

        • 这将只返回&lt;p&gt;id&lt;/p&gt;&lt;p&gt;Array&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;value&lt;/p&gt;&lt;p&gt;Array&lt;/p&gt;&lt;hr /&gt; 4 个中的 2 个。另外,我想显示字段的值 - 输入中插入的内容。
        • 对,对不起,错过了你的名字参数是数组的部分。我会编辑。
        • 小心这种方法。文本输入很好,但如果输入是混合的(比如文本和复选框),未选中复选框的计数将不匹配
        • @Phil 因此我的 NOTE 关于答案。
        • @phil - 实际上我主要将它用于复选框。比什么解决方案?
        【解决方案6】:

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

        【讨论】:

          【解决方案7】:
          <?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 />';
            }
          
          } 
          
           ?>
          

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

          【讨论】:

            【解决方案8】:

            因为你有嵌套数组,那我其实推荐一种递归方式:

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

            【讨论】:

              【解决方案9】:

              foreach 循环可以正常工作,但您也可以简单

              print_r($_POST);
              

              或者在浏览器中进行漂亮的打印:

              echo "<pre>";
              print_r($_POST);
              echo "</pre>";
              

              【讨论】:

                【解决方案10】:

                最近遇到了这个“内爆”。

                可能对输出数组有用。 http://in2.php.net/implode

                echo 'Variables: ' . implode( ', ', $_POST);
                

                【讨论】:

                • 请注意,这将输出值,而不是键
                【解决方案11】:

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

                echo "<pre>";
                print_r($_POST);
                echo "</pre>";
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-08-16
                  • 1970-01-01
                  • 2018-07-06
                  • 2012-04-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多