我试图了解将HTML表单发送到PHP脚本时发生的事情背后的机制,最重要的是_GET美元和_POST美元中的实际内容。
到目前为止,我对它的理解:当提交 HTML 表单时,会向服务器发出 HTTP 请求,并且 HTML 表单中 name="value" 对的值部分入到超全局 PHP 数组中,可以是 $_GET 或 $_POST,具体取决于用于发送数据的方法。右?
我的问题:
- 如果我们给出一个输入元素:name="test[]"并使用 post 方法发送它,那么根据上述信息,字符串 "test[]" 被发送到 $_POST。那么 $_POST 是否包含值为"test[]"的字符串,或者它是否包含名为 test 的数组?我们是否将数组放在数组中?
- 给定 name="name" 的输入,如果只将字符串"name"发送到服务器,它如何选择用户在该字段中键入的值。
name[]
这样的名称被扩展为数组,但可能不像你想象的那样。如果您有:
<input type="checkbox" name="foo[]" value="bar" />
<input type="checkbox" name="foo[]" value="ipsum" />
如果您同时选中这两个复选框。您将获得:
array(
"foo" => array("bar", "ipsum")
)
如果您只检查第二个,您将获得:
array(
"foo" => array("ipsum")
)
如果您不检查任何内容,您将获得:
array()
(所以甚至不存在密钥foo
(。
对于文本输入,它只会发送一个空值,如下所示:
array(
"foo" => ""
)
但是对于复选框,情况就不同了。
浏览器将从表单发送所有值,它看起来像这样name1=val1&name2=val2
(名称和值对用&
分隔(。
然后它会解析它(您可以使用parse_str()
进行测试(并放置在$_POST
或$_GET
数组中(取决于表单方法(。在此步骤中,所有[]
将扩展到数组。
是的,您可以将数组放在数组中。您也可以将下一个数组放入该数组中:)它被称为multidimensional array
.