1

我试图了解将 HTML 表单发送到 PHP 脚本时发生的事情背后的机制,最重要的是 $_GET 和 $_POST 中的实际情况。我会尽力解释我不明白的。

到目前为止我对它的理解:当提交 HTML 表单时,会向服务器发出 HTTP 请求,并且 HTML 表单内的 name="value" 对的Value 部分被插入到超全局 PHP 数组中 $_GET 或 $ _POST 取决于用于发送数据的方法。对?

我的问题:

  1. 如果我们给一个输入元素:name="test[]" 并使用 post 方法发送它,那么根据上面的信息,STRING "test[]" 被发送到 $_POST。那么 $_POST 是否包含一个值为“test[]”的字符串,还是包含名为 test 的数组?我们是否将数组放入数组中?
  2. 给定一个带有 name="name" 的输入,如果只有字符串“name”被发送到服务器,它如何选择用户在该字段中键入的值。
4

2 回答 2

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" => ""
)

但对于复选框,情况有所不同。

于 2013-10-03T15:26:46.783 回答
0

浏览器将从表单发送所有值,它看起来像这样name1=val1&name2=val2(名称和值对以 分隔&)。

然后它会解析它(您可以使用 测试它parse_str())并放入$_POSTor$_GET数组(取决于表单方法)。在这一步中,所有出现的事件都[]将扩展为数组。

是的,您可以将数组放入数组中。您也可以将下一个数组放入该数组:) 它被称为multidimensional array.

于 2013-10-03T15:27:20.433 回答