【问题标题】:How to loop through appended inputs inside an array如何遍历数组内的附加输入
【发布时间】:2019-11-23 00:45:42
【问题描述】:

我正在通过 API 提交附加输入。每次的项目数量都不一样。当我提交表单时,输入提交成功并返回一个对象,但只提交最后附加的输入。如何在显示的数组内运行循环,或者循环的语法在这里有效,以便我为每个附加的输入提交一个新项目?感谢您考虑。

<script>
$(document).ready(function(){
    $("#new").click(function(){
        $("table").append("<tr><td><input type= 'text' name = 'item[]'</td> </tr>");
    });
});
</script>

<?php 

在输入 name="item[]" 我的 PHP 的表单/表格之后:

if (isset($_POST['submit']))
{
   $size = sizeof($_POST['item']);
   for ($i = 0; $i < $size; $i++)  
   {
      $product = $_POST['item'][$i];
   }
   $fields = array(
      'customer' => 992058,
      'items' => [
                    [
                        'name' => $product,
                    ]
                 ]
   );

// HERE IS A CURL CALL that POSTS $fields AND RETURNS JSON
?>

我希望返回的 JSON 可能类似于

"items":[{"name":"product1"}][{"name":"product2"}];

而不是我得到的是

"items":[{"name":"product2"}]

【问题讨论】:

  • 有什么特别的原因让你从 position = 1 开始循环吗?你能转储你的$_POST['item'] 数组吗?或显示项目如何定位以及它们有什么索引。
  • 您对位置 = 1 的看法是正确的。我将其固定为零。 var_dump 返回一个字符串,如果我将它放在循环中,它会返回所有输入。但只有最后一个输入会创建一个带有名称的新项目。这有意义吗?

标签: php arrays json loops append


【解决方案1】:

这是您需要做的:

if (isset($_POST['submit']))
    {

        $size = sizeof($_POST['item']);
        $products = [];

        for ($i = 1; $i < $size; $i++)  

            {

                $products[]['name'] = $_POST['item'][$i];
            }

            $fields = array(

                        'customer' => 992058,


                        'items' => $products
                            );

您的代码存在问题,即 var $product 在循环运行时仅获得最后一个插入,您需要在循环内创建一个数组。

【讨论】:

  • 谢谢你,Serghei,我已经走得够远了,你的回答是最有用的
猜你喜欢
  • 2019-12-29
  • 2011-08-14
  • 2014-08-28
  • 2017-07-28
  • 2018-06-05
  • 2013-09-03
  • 1970-01-01
  • 2017-04-23
  • 1970-01-01
相关资源
最近更新 更多