一尘不染

HTML / PHP-表单-输入为数组

html

我有这样的表格

<form>
<input type="text" class="form-control" placeholder="Titel" name="levels[level]">
<input type="text" class="form-control" placeholder="Titel" name="levels[build_time]">

<input type="text" class="form-control" placeholder="Titel" name="levels[level]">
<input type="text" class="form-control" placeholder="Titel" name="levels[build_time]">

</form>

我想要的$ _POST输出是一个像

Array ( 
  [1] => Array ( [level] => 1 [build_time] => 123 ) 
  [2] => Array ( [level] => 2 [build_time] => 456 )
)

我知道我可以做类似name =“ levels [1]
[build_time]”之类的事情,但是由于这些元素是动态添加的,因此很难添加索引。还有其他办法吗?

编辑:

按照建议,我更改了表格。我现在也包含了我的整个HTML,因为我认为这里缺少一些内容。我的HTML现在:

<div class="form-group">
  <label class="col-md-2">Name(z.B. 1)</label>
  <div class="col-md-10">
    <input type="text" class="form-control" placeholder="Titel" name="levels[][level]">
  </div>

  <label class="col-md-2">Bauzeit(In Sekunden)</label>
  <div class="col-md-10">
    <input type="text" class="form-control" placeholder="Titel" name="levels[][build_time]">
  </div>
</div>

<div class="form-group">
  <label class="col-md-2">Name(z.B. 1)</label>
  <div class="col-md-10">
    <input type="text" class="form-control" placeholder="Titel" name="levels[][level]">
  </div>

  <label class="col-md-2">Bauzeit(In Sekunden)</label>
  <div class="col-md-10">
    <input type="text" class="form-control" placeholder="Titel" name="levels[][build_time]">
  </div>
</div>

我现在得到的输出是:

[levels] => Array ( 
  [0] => Array ( [level] => 1 ) 
  [1] => Array ( [build_time] => 234 ) 
  [2] => Array ( [level] => 2 ) 
  [3] => Array ( [build_time] => 456 ) 
)

编辑2:

根据您的编辑建议,我编辑了表单并将方括号移到名称的末尾。我现在得到的输出是:

[levels] => Array ( 
  [level] => Array ( 
    [0] => 1 
    [1] => 2 
  ) 
  [build_time] => Array ( 
    [0] => 234 
    [1] => 456 
  )
)

我想那会起作用,但看起来仍然很复杂。没有更好的办法吗?


阅读 470

收藏
2020-05-10

共1个答案

一尘不染

只需添加[]诸如

 <input type="text" class="form-control" placeholder="Titel" name="levels[level][]">
 <input type="text" class="form-control" placeholder="Titel" name="levels[build_time][]">

获取该模板,然后甚至可以使用循环添加这些模板。

然后,您可以根据需要动态地添加这些内容,而无需提供索引。PHP将像预期的场景示例那样拾取它们。

编辑

抱歉,我在错误的位置放置了大括号,这会使每个新值成为一个新的数组元素。现在使用更新的代码,这将为您提供以下数组结构

levels > level (Array)
levels > build_time (Array)

两个子阵列上的相同索引将为您提供一对。例如

echo $levels["level"][5];
echo $levels["build_time"][5];
2020-05-10