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 输入数组的主要内容,如果未能解决你的问题,请参考以下文章