代码之家  ›  专栏  ›  技术社区  ›  danwellman

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

  •  36
  • danwellman  · 技术社区  · 16 年前

    name 属性,并且表单已发布,您仍然能够从 $_POST PHP中的数组?

    4 回复  |  直到 10 年前
        1
  •  77
  •   Gerard de Visser    12 年前

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

    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 .

    原因是什么 美元邮政 仅当不使用时才包含最后一个值 [] 美元邮政 . 当它遇到已经存在的名称/值对时,它将覆盖上一个名称/值对。

    $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;
    }
    

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

        2
  •  8
  •   Daniel Mihai    13 年前

    而不是 name="nfo[val]" name="nfo[val][]" 在PHP中,您可以使用 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>
    

    $output='';
    foreach ($nfo['val'] as $key=>$val) {
        $output.= $val.", ";
    }
    

    $output val1, val2, val3

    希望这有帮助!

        3
  •  6
  •   streetparade    16 年前

    您必须创建它们的数组: name=inputname[] 然后通过post、request或get获得

    $inputs = $_POST['inputname'];
    
    print_r($inputs);
    
        4
  •  2
  •   jpabluz    16 年前

    names[] 在这种情况下,您将获得一个数组作为$\u POST变量中的变量。

    推荐文章