我有一个输入表单,可以让我在数据库中插入一个新的测验。该表单看起来像这样:
Question Title
Question #1
is_correct_1
choice#1
is_correct_2
choice#2
is_correct_3
choice#3
is_correct_4
choice#4
Question #2
.
.
.不同的测验会有不同数量的问题(尽管每个问题总是有4种可能性)。我确定在构建表单之前它会有多少个问题。为了做到这一点,我使用for循环来生成表单。我也以相同的方式初始化不同输入字段的名称。见下文:
// Grab number of questions from Admin page
$num_of_Qs = $_POST['num_of_Qs'];
// Produce form by using for loops
echo '
';echo '
New Quiz DetailsQuiz Title';echo '
';
for ($i = 1; $i <= $num_of_Qs; $i++) {
echo 'Question #'.$i.'';
echo '
';
for ($x = 1; $x <= 4; $x++) {
echo 'is_correct_'.$x.'';
echo '
';
echo 'Choice #'.$x.'';
echo '
';
}
}
echo '
';echo '
';所以,变量最终看起来像这样:$title
$question_1
is_correct_1_1
choice_1_1 // first question, first choice
is_correct_1_2
choice_1_2 // first question, second choice
...当我通过使用$ _POST函数抓取它们来存储这些变量时,我遇到了麻烦。这是我的代码:
// If user has submitted New Quiz data
if (isset($_POST['create'])) {
$num_of_Qs = $_POST['num_of_Qs'];
$title = $_POST['title'];
for ($i = 1; $i <= $num_of_Qs; $i++) {
$question_$i = $_POST['question_'.$i.''];
for ($x = 1; $x <= 4; $x++) {
$is_correct_$i_$x = $_POST['is_correct_'.$i.'_'.$x''];
$choice_$i_$x = $_POST['choice_'.$i.'_'.$x.''];
}
}
print_r($title);
print_r($question_1);
exit();
}我想知道是否有办法从基于我为变量名确定的结构获取表单中的值。具体问题在于$question_$i = ...。我可以挽救这段代码吗?还是我需要重新思考我命名这些变量的方式?谢谢!