我知道几年前我发现过一次,但我再也找不到了。
我有一个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"answers"ClassDate"的值是多少。我能够计算出哪个数组包含以下内容:
$row = substr($field,strlen($field)-1,strlen($field));
但现在我想找出$row["ClassID"]的$_Post值。我试过几种方法:
$row["ClassID"]
给我$row
$_POST[$row["ClassID"]]
给我阵列
$_POST[$row]["ClassID"]
给我一个错误。啊!如何获取ClassID?
感谢
您需要这样设计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
)
与其将后缀号匹配到那些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
}
谢谢大家的精彩回答。事实上,我终于找到了解决方案。
$rowarray = $_POST[$row];
我现在可以访问特定行的信息,因此:
$rowarray["ClassID"]
现在,其他偶然发现这个问题的人将有多种解决方案。