我知道几年前我发现了这个,但我再也找不到了。
我有一个HTML表单,其中包含我已设置为数组的输入组:
<label><input type='radio' name='choice1' value='K'>Keep</label><br>
<label><input type='radio' name='choice1' value='M'>Modify</label><br>
<label><input type='radio' name='choice1' value='D'>Delete</label>
<input name='1[ClassID]' type='text'>
<input name='1[ClassTitle]' type='text'>
<input name='1[ClassDate]' type='date' >
<label><input type='radio' name='choice2' value='K'>Keep</label><br>
<label><input type='radio' name='choice2' value='M'>Modify</label><br>
<label><input type='radio' name='choice2' value='D'>Delete</label>
<input name='2[ClassID]' type='text'>
<input name='2[ClassTitle]' type='text'>
<input name='2[ClassDate]' type='date' >
现在,我已经设置了PHP来查找Choice字段并查看它反映的内容:
foreach($_POST as $field => $value)
{
if (substr($field,0,strlen($field)-1) == "Choice")
{
switch ($value)
等
这是我的问题。我想知道“ClassID”,“ClassTitle”和“ClassDate”的值是否适用于该数组中引用的输入。我能够找出具有以下内容的数组:
$row = substr($field,strlen($field)-1,strlen($field));
但现在我想找出$ row [“ClassID”]的$ _Post值。我尝试了几件事:
$row["ClassID"]
给我$ row
$_POST[$row["ClassID"]]
给我数组
$_POST[$row]["ClassID"]
给我一个错误。 ARGGHHH!我如何获得ClassID?
由于
答案 0 :(得分:0)
您需要像这样设计HTML:
查看更改name='ClassID[1][]'
....
<label><input type='radio' name='choice1' value='K'>Keep</label><br>
<label><input type='radio' name='choice1' value='M'>Modify</label><br>
<label><input type='radio' name='choice1' value='D'>Delete</label>
<input name='ClassID[1][]' type='text'>
<input name='ClassTitle[1][]' type='text'>
<input name='ClassDate[1][]' type='date' >
<label><input type='radio' name='choice2' value='K'>Keep</label><br>
<label><input type='radio' name='choice2' value='M'>Modify</label><br>
<label><input type='radio' name='choice2' value='D'>Delete</label>
<input name='ClassID[2][]' type='text'>
<input name='ClassTitle[2][]' type='text'>
<input name='ClassDate[2][]' type='date' >
发布输出
Array
(
[choice1] => K
[ClassID] => Array
(
[1] => Array
(
[0] => a1
)
[2] => Array
(
[0] => a2
)
)
[ClassTitle] => Array
(
[1] => Array
(
[0] => b1
)
[2] => Array
(
[0] => b2
)
)
[ClassDate] => Array
(
[1] => Array
(
[0] => 2016-12-30
)
[2] => Array
(
[0] => 2016-05-19
)
)
[choice2] => M
[submit] => Submit
)
答案 1 :(得分:0)
不是将该后缀数字与这些Class*
输入相匹配,为什么不将它们分组为整行。它的命名组约定应该是这样的:
input[1][choice]
input[1][ClassID]
input[1][ClassTitle]
input[1][ClassDate]
.. and another batch with input[2] and so on
此表单中的标记应如下所示:
<label><input type='radio' name='input[1][choice]' value='K'>Keep</label><br>
<label><input type='radio' name='input[1][choice]' value='M'>Modify</label><br>
<label><input type='radio' name='input[1][choice]' value='D'>Delete</label>
<input name='input[1][ClassID]' type='text'>
<input name='input[1][ClassTitle]' type='text'>
<input name='input[1][ClassDate]' type='date' >
<br/><br/>
<label><input type='radio' name='input[2][choice]' value='K'>Keep</label><br>
<label><input type='radio' name='input[2][choice]' value='M'>Modify</label><br>
<label><input type='radio' name='input[2][choice]' value='D'>Delete</label>
<input name='input[2][ClassID]' type='text'>
<input name='input[2][ClassTitle]' type='text'>
<input name='input[2][ClassDate]' type='date' >
所以反过来,你已经得到了整行,没有更多的匹配和其他东西:
$input = $_POST['input'];
这应该产生:
Array
(
[1] => Array
(
[choice] => K
[ClassID] => 1
[ClassTitle] => 1
[ClassDate] => 2016-11-11
)
[2] => Array
(
[choice] => M
[ClassID] => 2
[ClassTitle] => 2
[ClassDate] => 2016-02-22
)
)
然后做你需要做的其他事情:
foreach($input as $key => $value) {
$key === 1, 2 etc..
echo $value['ClassID'] corresponds to this current batch iteration
echo $value['choice'] // the checkbox
// your other stuff
}
答案 2 :(得分:0)
谢谢你们的回答。我实际上最终想出了解决方案。
$rowarray = $_POST[$row];
我现在可以访问该特定行的信息:
$rowarray["ClassID"]
现在遇到这个问题的其他人会有多种解决方案。