我正在遍历一个对象列表:但是有几次(并且总是针对相同的对象)它将无法按预期工作。
我正在尝试将教师对象添加到列表中,如果其ID与该时间段(SubBlock / SB)中上一课的教师ID不匹配。它似乎并不喜欢的一位老师是一位可以自由地教授所有课程的老师。
我试图让它去挑选那位老师,它可以尝试1,3,5而不是2,4,6。
以下是相关功能:
function getRelaventFreeTeachers(&$PossibleTeachers, $Teachers, $Lessons, $SB){
foreach ($Teachers as $TeacherID){
$Usability = 1;
foreach ($Lessons as $Lesson){
$LT = $Lesson->getLessonTeacher();
$T = $TeacherID->getTID();
$LSB = $Lesson->getBlock();
if ($LT != $T){
if ($LSB != $SB){
$Usability = 1;
}
}else{
$Usability = 0;
}
}
if ($Usability == 1){
array_push($PossibleTeachers, $TeacherID);
}
}
}
答案 0 :(得分:0)
关于添加或不添加可能的教师的条件,问题并不是很清楚,但代码中的某些内容似乎有误:
一旦变量$Usability
设置为0,您的代码就不会阻止它在内循环的后续迭代中再次获得1。这看起来不对。一旦检测到内循环不正常,就应该退出内循环。
因此不需要将$Usability
设置为1的情况:从开始就已经是1,当它从0开始时退出。您写了一个条件,只应检查教师的特定时期。如果我正确解释,那么代码可能需要如下所示:
if ($LT == $T && $LSB == $SB) { // Is the second condition indeed what you want?
$Usability = 0;
break;
}