gpt4 book ai didi

php - 发布具有相同名称属性的表单字段

转载 作者:IT王子 更新时间:2023-10-29 00:59:59 26 4
gpt4 key购买 nike

如果您有一个包含具有重复 name 属性的文本输入的表单,并且该表单已发布,您是否仍然能够从 $_POST PHP 中的数组?

最佳答案

没有。只有最后一个输入元素可用。

如果您想要多个具有相同名称的输入,请使用 name="foo[]" 作为输入名称属性。 $_POST 将包含一个 foo 的数组,其中包含来自输​​入元素的所有值。

<form method="post">
<input name="a[]" value="foo"/>
<input name="a[]" value="bar"/>
<input name="a[]" value="baz"/>
<input type="submit" />
</form>

HTML reference at Sitepoint .

$_POST 如果你不使用 [] 将只包含最后一个值的原因是因为 PHP 基本上只会对原始查询字符串进行爆炸和 foreach填充 $_POST。当它遇到一个已经存在的名称/值对时,它会覆盖之前的。

但是,您仍然可以像这样访问原始查询字符串:

$rawQueryString = file_get_contents('php://input'))

假设你有这样的表格:

<form method="post">
<input type="hidden" name="a" value="foo"/>
<input type="hidden" name="a" value="bar"/>
<input type="hidden" name="a" value="baz"/>
<input type="submit" />
</form>

$rawQueryString 将包含 a=foo&a=bar&a=baz

然后您可以使用自己的逻辑将其解析为数组。一种天真的方法是

$post = array();
foreach (explode('&', file_get_contents('php://input')) as $keyValuePair) {
list($key, $value) = explode('=', $keyValuePair);
$post[$key][] = $value;
}

然后会为查询字符串中的每个名称提供一个数组数组。

关于php - 发布具有相同名称属性的表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2203430/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com