我有一个外部for循环,它根据SQL表的字段创建一个表单。它工作正常,放置正确数量的输入元素与相关的名称,ID等...顺便说一句,这些输入元素是用于选择科目,如数学,科学等...
为了检查并查看是否应该检查这些框,我查询另一个名为subject_teachers的SQL表,其中每位教师在给定唯一ID的情况下报告与不同主题的关系。这是一个多对多的表,因为任何给定的老师都可以教授许多不同的科目,任何科目,并由许多老师教授。在编写内部for循环以检查复选框时,我得到了正确数量的复选框,但现在我打印了两倍的科目,即代替数学,科学,英语,它打印数学数学,科学科学,英语英语
这是我写的:
for ($i = 0; $i < $subjects_num;$i++)
{
for ($j = 0; $j < $subjects_taught;$j++)
{
if ($all_subjects[$i]['subject_id'] == $this_user[$j]['subject_id'])
{
$checked = "checked";
}
else
{
$checked = "";
}
echo "<label class='checkbox-inline'><input type='checkbox' name='subject' id=".$all_subjects[$i]['subject_id']." value=".$all_subjects[$i]['subject_id']." . $checked .>".$all_subjects[$i]['subject_en_name']."</label>";
}
}
如果我将echo语句放在内部第一个循环之外,我会得到正确数量的复选框,但检查了不正确的(较少)框。对于我正在使用的示例,应检查前两个框。
由于
答案 0 :(得分:0)
只需要在内循环的if条件中添加中断
if ($all_subjects[$i]['subject_id'] == $this_user[$j]['subject_id'])
{
$checked = "checked";
break;
}