Php 如何区分两个同名的多个选择列表
对于我正在构建的系统,我需要查看哪些选项(带有POST请求)来自第一个列表,哪些选项来自第二个列表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>
<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表示将元素推到数组末尾的方式。所以我尝试了这个,它成功了。我自己也不知道这是可能的。