HTML 输入数组

Posted

技术标签:

【中文标题】HTML 输入数组【英文标题】:HTML input arrays 【发布时间】:2010-11-03 21:36:47 【问题描述】:
<input name="foo[]" ... >

我以前用过这些,但我想知道它叫什么,是否有规范?

我在html 4.01 Spec 中找不到它,导致各种 Google 结果只称它为“数组”以及许多处理表单数据的 php 示例。

【问题讨论】:

【参考方案1】:

这只是 PHP,而不是 HTML。

它将所有带有 [] 的 HTML 字段解析为一个数组。

所以你可以拥有

<input type="checkbox" name="food[]" value="apple" />
<input type="checkbox" name="food[]" value="pear" />

当提交时,PHP 会将 $_POST['food'] 变成一个数组,你可以像这样访问它的元素:

echo $_POST['food'][0]; // would output first checkbox selected

或查看所有选择的值:

foreach( $_POST['food'] as $value ) 
    print $value;

不管怎样,不要以为它有一个特定的名字

【讨论】:

我想他明白这一点,他只是想知道是否有规范。 PHP 是我遇到的唯一一种默认表单处理库需要特殊命名约定的语言,用于您拥有多个具有相同名称的成功控件的情况。其他语言通常将决定是否将某些东西视为数组由程序作者决定。 “规范”,例如,位于us2.php.net/manual/en/faq.html.php#faq.html.arrays 对 David 的 cmets 的进一步说明:大多数服务器端框架都足够聪明,可以意识到如果多个表单值具有相同的名称(例如,如果选中了三个具有相同名称的复选框),那么应该转换这些值在服务器上解析时到一个数组。出于某种原因,这种显而易见的方法从未在 PHP 中实现过:它需要 [] 告诉它做明智的事情。甚至 Classic ASP 也比这更清楚:-( 我来自 Laravel 的文档,他们将其命名为“数组输入”。 (链接:laravel.com/docs/8.x/requests#retrieving-input)【参考方案2】:

据我所知,HTML 规范中没有任何内容,因为浏览器不应该为这些字段做任何不同的事情。他们只是像往常一样发送它们,PHP 和其他语言一样将它们解析为数组。

【讨论】:

【参考方案3】:

在cmetson this page at PHP.net中有一些引用和指针:

托斯滕说

“XHTML 规范的兼容性指南的 C.8 节适用于将 name 属性用作片段标识符。如果您检查 DTD,您会发现 'name' 属性仍然定义为表单元素的 CDATA 。”

Jetboy 说

“据此:http://www.w3.org/TR/xhtml1/#C_8 name 属性的类型在 XHTML 1.0 中已更改,这意味着 XHTML 的 name 属性中的方括号无效。

无论如何,在撰写本文时,W3C 的验证器并没有在 XHTML 文档中检测到这一点。”

【讨论】:

【参考方案4】:

跟着它...

<form action="index.php" method="POST">
<input type="number" name="array[]" value="1">
<input type="number" name="array[]" value="2">
<input type="number" name="array[]" value="3"> <!--taking array input by input name array[]-->
<input type="number" name="array[]" value="4">
<input type="submit" name="submit">
</form>
<?php
$a=$_POST['array'];
echo "Input :" .$a[3];  // Displaying Selected array Value
foreach ($a as $v) 
    print_r($v); //print all array element.

?>

【讨论】:

以上是关于HTML 输入数组的主要内容,如果未能解决你的问题,请参考以下文章

输入n个数组,数组长度不等,每个数组取出一个数进行组合,求出所有的组合。

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

html 把数组批量生成输入标签并且绑定

LeetCode-167-两数之和 II - 输入有序数组

如何在 php 数组中插入多个 html 输入字段数据?

html 循环遍历地址数组并根据选择填充输入字段