我见过很多处理表单输入的 PHP 代码,其中输入字段名称包含方括号。据我所知,当 PHP 脚本检查 $_POST 变量时,这会以某种方式产生 PHP 数组。
HTML 示例:
<form action='http://zzz.com' method='post'>
<input name='fruit[1]' value='apple' />
<input name='fruit[2]' value='banana' />
</form>
示例网址:
http://zzz.com?fruit[1]=apple&fruit[2]=banana
PHP 示例:
assert($_POST['fruit'] === array(1=>'apple', 2=>'banana'));
我对此的疑问:
背后的机制是什么?在哪
指向这个仅包含的名称
括号转换为数组?是
这是 HTTPP 协议的一个特性吗?
网络服务器? PHP 语言的?>
这是PHP语言的一个特性。事实上,HTTP 协议并不禁止使用多个相同的 GET/POST 参数。根据 HTTP 规范,如下:
foo=bar&foo=baz
不应该导致foo == baz
。这是具有两个不同值的两个参数。但是,PHP 会覆盖前者foo
与最新的,导致$_POST['foo'] == 'baz'
,即使它们可以单独解析。
继续上一个问题,就是
这是常用的 hack 或普通的
编程工具?
这取决于观点。在 PHP 世界中,这是完全正常的,因为该语言不支持在不使用括号的情况下指定多个同名参数[]
。但在 HTTP 世界中,foo != foo[]
.
(全部)使用规则是什么
输入字段名称中的括号?
与 PHP 数组相同,只是您不必引用字符串键。
可以创建多维数组吗
这边走?
是的你可以。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)