应添加到if语句中的列表中的某些内容未添加

时间:2018-02-21 16:26:21

标签: php database if-statement phpmyadmin

我正在遍历一个对象列表:但是有几次(并且总是针对相同的对象)它将无法按预期工作。

我正在尝试将教师对象添加到列表中,如果其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);
     }
   }
}

1 个答案:

答案 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;
    }