为了账号安全,请及时绑定邮箱和手机立即绑定

具有相同名称属性的过帐表单字段

具有相同名称属性的过帐表单字段

PHP
素胚勾勒不出你 2019-10-11 11:17:48
如果您有一个包含带有重复name属性的文本输入的表单,并且该表单已经过帐,那么您仍然能够从$_POSTPHP数组中获取所有字段的值吗?
查看完整描述

3 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

否。仅最后一个输入元素可用。


如果要使用相同名称的多个输入,请使用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>

请参阅Sitepoint上的HTML参考。


$_POST如果不使用[]则仅包含最后一个值的原因是因为PHP基本上只会爆炸并遍历要填充的原始查询字符串$_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;

}

这将为您提供查询字符串中每个名称的数组数组。


查看完整回答
反对 回复 2019-10-11
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

除了在PHP中name="nfo[val]"使用外name="nfo[val][]",还可以使用foreach()


HTML代码:


<form method="post">

    <input name="nfo[val][]" value="val1"/>

    <input name="nfo[val][]" value="val2"/>

    <input name="nfo[val][]" value="val3"/>

    <input type="submit" />

</form>

PHP代码:


$output='';

foreach ($nfo['val'] as $key=>$val) {

    $output.= $val.", ";

}

$output 将会: val1, val2, val3


希望这可以帮助!


查看完整回答
反对 回复 2019-10-11
?
心有法竹

TA贡献1866条经验 获得超5个赞

您必须创建它们的数组:name=inputname[] 与post,request或get一起使用


$inputs = $_POST['inputname'];


print_r($inputs);


查看完整回答
反对 回复 2019-10-11
  • 3 回答
  • 0 关注
  • 265 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信