首页 > 后端开发 > php教程 > 如何在 PHP 中处理同名的多个表单字段?

如何在 PHP 中处理同名的多个表单字段?

Barbara Streisand
发布: 2024-11-23 04:19:25
原创
221 人浏览过

How Can I Handle Multiple Form Fields with the Same Name in PHP?

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板