Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何区分两个同名的多个选择列表_Php_Html_Forms_Post - Fatal编程技术网

Php 如何区分两个同名的多个选择列表

Php 如何区分两个同名的多个选择列表,php,html,forms,post,Php,Html,Forms,Post,对于我正在构建的系统,我需要查看哪些选项(带有POST请求)来自第一个列表,哪些选项来自第二个列表 <form method="post"> <select name="cars[]" multiple> <option selected>test</option> <option selected>test2</option>

对于我正在构建的系统,我需要查看哪些选项(带有POST请求)来自第一个列表,哪些选项来自第二个列表

<form method="post">
    <select name="cars[]" multiple>
        <option selected>test</option>
        <option selected>test2</option>
        <option>test3</option>
        <option>test4</option>
    </select>
    <select name="cars[]" multiple>
        <option>hai</option>
        <option>hai2</option>
        <option selected>hai3</option>
        <option selected>hai4</option>
    </select>
    <input type="submit">
</form>

实际上,除了“haiX”选项之外,我还想检索“testX”选项。现在我看不出哪个来自第一个列表,哪个来自第二个列表。当然,我知道我也可以使第二个列表的名称不同于第一个列表的名称,但我希望这样做是有充分理由的。

您应该能够像这样检索它们:

Array
(
    [cars] => Array
        (
            [0] => test
            [1] => test2
            [2] => hai3
            [3] => hai4
        )
)
$\u POST['cars'][0]
指的是“测试”集


$\u POST['cars'][1]
指的是“hai”集合

这可以通过为每个选择列表使用隐藏字段(输入)来完成。您可以根据需要命名它们,这是如何知道的。

我做了以下操作:

<?php

    if (isset($_POST['cars']))
    {
      $test = array();
      $hai = array();

      $lista = $_POST['cars'];
      foreach ($lista as $key ) {
          if (substr($key,0,1)=="t")
          {
            $test[] = $key;
          }
          else
          {
            $hai[] = $key;
          }
      }
    }
    var_dump($test);
    var_dump($hai);
    ?>


    <form method="post">
        <select name="cars[]" multiple>
            <option selected>test</option>
            <option selected>test2</option>
            <option>test3</option>
            <option>test4</option>
        </select>
        <select name="cars[]" multiple>
            <option>hai</option>
            <option>hai2</option>
            <option selected>hai3</option>
            <option selected>hai4</option>
        </select>
        <input type="submit">
    </form>

测试
测试2
测试3
测试4
海
海2
海3
海4
在本地主机上测试


Saludos:)

通过在以下表格中创建多维数组来划分类别:

<form method="post">
    <select name="cars[0][]" multiple>
        <option selected>test</option>
        <option selected>test2</option>
        <option>test3</option>
        <option>test4</option>
    </select>
    <select name="cars[1][]" multiple>
        <option>hai</option>
        <option>hai2</option>
        <option selected>hai3</option>
        <option selected>hai4</option>
    </select>
    <input type="submit">
</form>

测试
测试2
测试3
测试4
海
海2
海3
海4

然后像这样阅读:$\u POST['cars'][0]用于第一组,而$\u POST['cars'][1]用于第二组

您不能为第二个字段使用不同的唯一名称吗?e、 g.
cars[]
type[]
?正如我所说,我有很好的理由希望它有相同的名字。。或者必须有其他方法在页面上放置数量不确定的多个选择列表,并使用PHP轻松获取它们。您能够使用多个表单吗?e、 g.
formid=1 name=1 select=name[]。。。表单id=2 name=2 select=name[]
不确定您在同一表单下有重复名称的原因,这会妨碍您在没有在select select value中添加隐藏值的情况下尝试完成的工作,并在帖子上进行更多解析,例如
option value=frm1 | value1。。。option value=frm2 | value1
我不相信@Ttony21是正确的,它是一个带有x项的单数组,而不是多维数组。由于“多”属性,我想我理解这里的问题。@不,我检查了我的代码,它确实返回值,但问题是她允许多个选择,因此,数据没有在arrayRight中划分,$\u POST[0-3]无法判断它来自哪个选择(不假设顺序),OP想知道它来自哪个选择。添加了一个我测试过的新答案。工作正常,但我不确定它是否符合规格。是的,这是一个非常有效的解决方案。将此标记为答案,直到更好的结果出现!如果您同时为这些隐藏字段指定一个数组名(hiddenName[]),则可以通过一个hiddenName POST变量获取列表的所有名称。不,这仅适用于选项名在每个列表中的开头不同的情况,但情况并非如此(仅在我的演示中).回答很好@Ttony21…这是我第一次看到这样的东西…我也做了测试,效果很好,哈哈。。搞什么鬼。这管用!我试过车[0]和车[1],但显然需要额外的[]。关于那些唯一的名称^^:在这种情况下,这不是问题,因为我可以让PHP通过$_POST['cars']忽略数组键。如果您对其工作原理感到困惑,也可以这样设置数组:。和如下访问:$\u POST['cars']['category\u name\u 1']。我的理解是,名称末尾的额外括号是PHP表示将元素推到数组末尾的方式。所以我尝试了这个,它成功了。我自己也不知道这是可能的。