首页 > 解决方案 > 具有多个动态创建的同名输入字段的 PHP 表单

问题描述

我正在构建一个动态表单,用户可以创建更多卡片,并且在这些卡片中他们可以创建更多子字段 - 请参阅图片以进行演示。

html示例:

      <fieldset data-CardIndex="1">
        <div class="delete">X</div>
          <input type="text" name="firstField[]" value="" required>
          <input type="text" name="secondField[]" value="" required>
          <input type="text" name="thirdField[]" value="" required>
          <a class="addLinkBtn">+ Add More Child Fields</a>
          <div class="childWrapper">
             <input type="text" name="childOne[]" value="" required>
             <input type="text" name="childTwo[]" value="" required>
          </div>
        </div>
      </fieldset>

例如,当我用三张卡片提交表单时,Card1 中有一组 childOne 和 childTwo,Card2 中有两组,Card3 中有一组。我得到以下数组:

Array
(
   [firstField] => Array
   (
      [0] => a
      [1] => b
      [2] => c
   )
   [secondField] => Array
   (
      [0] => a
      [1] => b
      [2] => c
   )
   [thirdField] => Array
   (
      [0] => a
      [1] => b
      [2] => c
   )
   [childOne] => Array
   (
      [0] => aa
      [1] => bb
      [2] => bbbb
      [3] => cc
   )
   [childTwo] => Array
   (
      [0] => aa
      [1] => bb
      [2] => bbbb
      [3] => cc
   )
   [submit_update] => 
)

但我想收到一些类似的东西:

Array
(
   [0] => Array
   (
      [firstField] => a
      [secondField] => a
      [thirdField] => a
      [0] => Array
      (
         [childOne] => aa
         [childTwo] => aa
      )
   )
   [1] => Array
   (
      [firstField] => b
      [secondField] => b
      [thirdField] => b
      [0] => Array
      (
         [childOne] => bb
         [childTwo] => bb
      )
      [1] => Array
      (
         [childOne] => bbbb
         [childTwo] => bbbb
      )
   )
   [2] => Array
   (
      [firstField] => c
      [secondField] => c
      [thirdField] => c
      [0] => Array
      (
         [childOne] => cc
         [childTwo] => cc
      )
   )
   [submit_update] => 
)

有没有一种方法可以构建 HTML 或调用 PHP 函数来获得我正在寻找的输出?

我寻找这个解决方案的原因是因为当你有一堆子集时,它会变成一场噩梦,试图找出哪个集属于哪张卡。我尝试使用唯一标识,例如name="childOne[1-1]"表示它属于 Card1 并且是第一个子集。也不能让它在这条路线上工作。

非常感谢你们提出的任何意见,我已经断断续续地奋斗了整整一周。

谢谢

例子

标签: phphtmlformsinput

解决方案


推荐阅读