我试图了解HTML表单发送到PHP脚本时发生的事情背后的机制,最重要的是$ _GET和$ _POST内部的实际情况。我会尽力解释我不理解的事情。
到目前为止我对它的理解: 提交HTML表单时,会向服务器发出HTTP请求,并且HTML表单中的name =“value”对的 Value部分将被插入到超级全局PHP数组中$ _GET或$ _POST取决于用于发送数据的方法。正确?
我的问题:
答案 0 :(得分:1)
像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" => ""
)
但是对于复选框,它是不同的。
答案 1 :(得分:0)
浏览器会从表单中发送所有值,它看起来像name1=val1&name2=val2
(由&
分隔的名称和值对。)
然后它会解析它(你可以使用parse_str()
进行测试)并放在$_POST
或$_GET
数组中(取决于表单方法)。在此步骤中,所有[]
次出现都将扩展为数组。
是的,您可以将数组放入数组中。你也可以把下一个数组放到那个数组中:)它叫做multidimensional array
。