在 PHP 中处理具有相同名称属性的表单字段
在 PHP 中,当提交具有多个共享相同名称属性的输入字段的表单时,出现一种奇怪的行为。 $_POST 数组中只有具有该名称的最后一个字段的值可用。当尝试检索具有相同名称的所有字段的值时,这可能是一个重大障碍。
行为背后的原因
PHP 解析原始查询字符串以填充$_POST 数组,覆盖任何现有的同名值。因此,当遇到多个同名字段时,只记录最后一个。
数组结构字段名称
建议纠正此问题为每个输入字段分配一个数组结构名称。例如,您可以使用“foo[]”和“bar[]”,而不是将它们命名为“foo”和“bar”。此更改将在 $_POST 中创建一个数组,其中键是通用名称,值存储在数组中。
使用数组结构字段名称的示例代码
<form method="post"> <input name="a[]" value="foo"/> <input name="a[]" value="bar"/> <input name="a[]" value="baz"/> <input type="submit" /> </form>
在此示例中,$_POST['a'] 将是一个包含 ["foo", "bar", "baz"].
访问原始查询字符串
或者,如果您需要访问原始查询字符串,您可以使用 file_get_contents('php:/ /输入')功能。这将为您提供整个字符串,然后您可以自己解析该字符串。
解析原始查询字符串的示例代码
$post = array(); foreach (explode('&', file_get_contents('php://input')) as $keyValuePair) { list($key, $value) = explode('=', $keyValuePair); $post[$key][] = $value; }
此代码将创建一个数组将每个名称映射到一个值数组,解决多个字段具有相同名称属性的问题。
以上是如何在 PHP 中处理同名的多个表单字段?的详细内容。更多信息请关注PHP中文网其他相关文章!