我有一个外部for循环,它基于SQL表的字段创建一个表单。它工作得很好,将正确数量的输入元素与相关的名称、id等放在一起。顺便说一句,这些输入元素用于选择科目,如数学、科学等。
为了检查这些框是否应该被选中,我查询了另一个名为subject_tachers的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语句放在内部第一个循环之外,我会得到正确数量的复选框,但会选中不正确的(更少的)复选框。对于我使用的示例,应该选中前两个框。
感谢
只需要在内部循环的if条件中添加一个中断
if ($all_subjects[$i]['subject_id'] == $this_user[$j]['subject_id'])
{
$checked = "checked";
break;
}