【问题标题】:Retrieve post array values检索后数组值
【发布时间】:2014-03-12 02:37:26
【问题描述】:

我有一个使用 jQuery .serialize() 发送所有数据的表单,表单中有四个 arrays qty[], etc,它将表单数据发送到 sendMail 页面,我想从数组中取回发布的数据。

我试过了:

$qty = $_POST['qty[]'];
foreach($qty as $value)
{
  $qtyOut = $value . "<br>";
}

并尝试了这个:

for($q=0;$q<=$qty;$q++)
{
 $qtyOut = $q . "<br>";
}

这是正确的方法吗?

【问题讨论】:

  • 试试$qty = $_POST['qty'];

标签: php jquery arrays


【解决方案1】:

您的$_POST 变量中有[] - 这些不是必需的。你应该使用:

$qty = $_POST['qty'];

您的代码将是:

$qty = $_POST['qty'];

foreach($qty as $value) {

   $qtyOut = $value . "<br>";

}

【讨论】:

    【解决方案2】:

    php 会自动检测 $_POST$_GET 数组,因此您可以判断:

    <form method="post">
        <input value="user1"  name="qty[]" type="checkbox">
        <input value="user2"  name="qty[]" type="checkbox">
        <input type="submit">
    </form>
    
    <?php
    $qty = $_POST['qty'];
    

    $qty 将由 php-Array 组成。现在您可以通过以下方式访问它:

    if (is_array($qty))
    {
      for ($i=0;$i<size($qty);$i++)
      {
        print ($qty[$i]);
      }
    }
    ?>
    

    如果您不确定接收到的数据结构的格式可以使用:

    print_r($_POST['qty']);
    

    甚至

    print_r($_POST);
    

    看看它是如何存储的。

    【讨论】:

    • 没错。值得注意的是:不要忘记 HTML 中输入名称中的 [ ]。我忘记了这个,浪费了我的生命。
    • 您的答案非常适合多阵列。例如,我将发布姓名和年龄,因为我可以同时获得这两个值。
    • 要添加到这一点,通过在括号之间设置实际值而不是将它们留空并通过此 foreach (array_expression as $key => $value) 解析返回的数组 foreach 循环,您可以保留 id。在处理多个页面时很有用
    【解决方案3】:

    我的 PHP 4.4.4 版本抛出错误: 致命错误:调用未定义函数:size()

    我将 size 更改为 count,然后例程正确运行。

    <?php
    $qty = $_POST['qty'];
    
    if (is_array($qty)) {
       for ($i=0;$i<count($qty);$i++)
       {
           print ($qty[$i]);
       }
    }
    ?>
    

    【讨论】:

      【解决方案4】:

      尝试将 filter_input() 与过滤器 FILTER_SANITIZE_SPECIAL_CHARS 和 FILTER_REQUIRE_ARRAY 一起使用,如图所示

      $qty=filter_input(INPUT_POST, 'qty',FILTER_SANITIZE_SPECIAL_CHARS,FILTER_REQUIRE_ARRAY);
      

      然后你可以很好地遍历它

      foreach($qty as $key=>$value){
          echo $value . "<br>";
         }
      

      【讨论】:

        【解决方案5】:

        PHP 很好地处理嵌套数组

        尝试:

        foreach($_POST['qty'] as $qty){
           echo $qty
        }
        

        【讨论】:

          【解决方案6】:

          我更喜欢 foreach insted for,因为你不需要处理大小。

          if( isset( $_POST['qty'] ) )
          {
              $qty = $_POST ['qty'] ;
              if( is_array( $qty ) )
              {
                  foreach ( $qty as $key => $value ) 
                  {
                      print( $value );
                  }
              }
          }
          

          【讨论】:

            猜你喜欢
            • 2012-01-28
            • 1970-01-01
            • 1970-01-01
            • 2021-12-14
            • 2013-06-07
            • 2012-04-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多