当前位置: 首页 > 面试题库 >

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

欧照
2023-03-14
问题内容

我有这样的表格

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

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


问题答案:

只需添加[]诸如

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


 类似资料:
  • 问题内容: 我有一个类似下面的表单,该表单发布到contacts.php,用户可以使用jquery动态添加更多表单。 如果我用下面的代码在php中回显它们 我会得到这样的东西: 名称1名称2名称3电子邮件1电子邮件2电子邮件3 我怎样才能把这些数组变成下面的代码 所以我的输出是这样的: 名称为 name1 ,电子邮件为 email1 ,谢谢 。名称为 name2 ,电子邮件为 email2 ,谢谢

  • 我希望从HTML/PHP表单的输入创建一个.xml文件。我知道有一些关于这个的帖子,但我找不到我的案子的解决方案。 创建Exml.php 我需要关于缺失部分的帮助(而且我不知道jQuery/Ajax代码是否正确):如何从表单的post/input创建数组,将其发送到createxml.php,并从我们发送的数组创建.xml。

  • 问题内容: 我以前使用过这些,但是我想知道它叫什么以及是否有规范吗? 我在HTML 4.01 Spec中 找不到它,导致各种Google结果只将其称为“数组”,以及许多处理表单数据的PHP示例。 问题答案: 在PHP.net的此页面的注释中有一些引用和指针: 托斯滕说 “ XHTML规范的兼容性指南的C.8节适用于将name属性用作片段标识符。如果您检查DTD,则会发现’name’属性仍被定义为表

  • 问题内容: 根据HTML规范,HTML中的标记没有属性,只有属性。因此,如果要阻止用户更改下拉菜单,则必须使用。 唯一的问题是禁用的HTML表单输入不会包含在POST / GET数据中。 模拟标签属性并仍然获取POST数据的最佳方法是什么? 问题答案: 您应该保留该元素,但还要添加另一个具有相同名称和值的隐藏元素。 如果重新启用SELECT,则应在onchange事件中将其值复制到隐藏输入并禁用(

  • 我们是否可以将HTML输入属性值传递给$_post数组,或者用PHP获取它? 我意识到我可以创建一个隐藏字段,并基本上将真实输入的类型放入隐藏字段的值中,但这对我来说似乎有点像“重复”工作。 我想创建一个表单,其中输入值被提交到$_post,我可以检测该输入的类型,而不需要硬编码/映射单个输入到每个a类型。 通过这种方式,我可以检测字段类型并对其进行操作,而不需要创建一个“映射”,将我的自定义输入

  • 问题内容: 我是HTML的新手,正在尝试学习如何使用表单。 到目前为止,我最大的问题是对齐表格。这是我当前的HTML文件的示例: 问题在于,“电子邮件”后的字段框与名字和姓氏相比在空格方面有很大不同。使其真正“排队”的“正确”方法是什么? 我正在尝试练习良好的格式和语法…很多人可能不确定使用CSS来做到这一点,到目前为止,我仅了解HTML的基本知识。 问题答案: 另一个使用CSS的示例,我只是将表